{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "73bd968b-d970-4a05-94ef-4e7abf990827",
   "metadata": {},
   "source": [
    "Chapter 19\n",
    "\n",
    "# 非线性约束\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3cdff949-6bd2-4f68-b304-95ba9ffad3f6",
   "metadata": {},
   "source": [
    "这段代码通过约束优化方法在二维空间中寻找目标函数\n",
    "\n",
    "$$\n",
    "f(x_1, x_2) = -2x_1 e^{-x_1^2 - x_2^2}\n",
    "$$\n",
    "\n",
    "的最小值。优化包含一个非线性约束\n",
    "\n",
    "$$\n",
    "|x_1| + |x_2 + 1| \\leq 1\n",
    "$$\n",
    "\n",
    "和边界条件 $x_1, x_2 \\in [-1.5, 1.5]$。该非线性约束将优化变量 $(x_1, x_2)$ 限制在一个包含原点偏移的菱形区域内，从而限制搜索空间。\n",
    "\n",
    "代码首先定义了目标函数 $f(x_1, x_2)$ 并设置了约束，然后通过 `trust-constr` 算法进行优化，最终得出满足约束条件的最小值点 $(x_{\\text{opt}}, y_{\\text{opt}})$。优化结果包括最小值点及其对应的目标函数值。\n",
    "\n",
    "可视化部分展示了目标函数的等高线图和非线性约束边界。在等高线图中标记了最优解 $(x_{\\text{opt}}, y_{\\text{opt}})$，以帮助直观理解约束如何影响优化路径。通过这种方法，可以看到在复杂约束条件下目标函数的最优值是如何找到的。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6bd85cb4-3342-4b31-9dc5-02eafa80b705",
   "metadata": {},
   "source": [
    "## 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "46e08430-0472-4747-aae9-ea18d7855385",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from scipy.optimize import minimize, LinearConstraint, Bounds, NonlinearConstraint\n",
    "import matplotlib.pyplot as plt  # 导入绘图库"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "258bff86-efc1-47df-aa2b-5915424776f4",
   "metadata": {},
   "source": [
    "## 目标函数：定义目标函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0f707e4d-87e6-49e0-81df-eedb83b1e9e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "def obj_f(x):\n",
    "    x1 = x[0]  # 提取变量 x1\n",
    "    x2 = x[1]  # 提取变量 x2\n",
    "    obj = -2 * x1 * np.exp(-x1**2 - x2**2)  # 计算目标函数值\n",
    "    return obj"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5c2069a4-fbb8-4cec-98b8-16aeca9db062",
   "metadata": {},
   "outputs": [],
   "source": [
    "x0 = [1, 1]  # 初始猜测"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0bc4a85-b665-45af-ae22-0909f87b3cc0",
   "metadata": {},
   "source": [
    "## 非线性约束函数：定义非线性约束"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "104915c2-4c28-44e0-b073-e95a3b8666c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "def nonlinear_c(x):\n",
    "    x1 = x[0]\n",
    "    x2 = x[1]\n",
    "    nlc = np.abs(x1) + np.abs(x2 + 1) - 1  # 计算非线性约束\n",
    "    return nlc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "af8184d3-177d-4ebf-aa82-bc8b5779c6a8",
   "metadata": {},
   "outputs": [],
   "source": [
    "nlc = NonlinearConstraint(nonlinear_c, -np.inf, 0)  # 定义非线性约束"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94f60cd8-d67a-42d9-a49d-60e9cb3a25f1",
   "metadata": {},
   "source": [
    "## 定义变量的边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b90bc0d2-c401-454d-8fee-0ad69c87a592",
   "metadata": {},
   "outputs": [],
   "source": [
    "bounds = Bounds([-1.5, -1.5], [1.5, 1.5])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d913c97-2d09-414a-9491-7b336acffbe7",
   "metadata": {},
   "source": [
    "## 最优化求解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "66c4aa7e-3fb3-4cb7-acf8-31cc9dc497aa",
   "metadata": {},
   "outputs": [],
   "source": [
    "res = minimize(obj_f, x0,\n",
    "               method='trust-constr',\n",
    "               bounds=bounds,\n",
    "               constraints=[nlc])  # 求解优化问题\n",
    "\n",
    "optimized_x = res.x  # 提取优化后的 x 值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2c782de2-4a40-4e07-800b-dd8b688b205d",
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"==== Optimal solution ====\")\n",
    "print(res.x)  # 输出优化后的解"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "599d4c47-ec0a-4f23-a102-43c897cd4bf9",
   "metadata": {},
   "outputs": [],
   "source": [
    "print(\"==== Optimized objective ====\")\n",
    "print(res.fun)  # 输出优化后的目标函数值"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3d8cc72-3da2-4dd2-b574-43bf89654db8",
   "metadata": {},
   "source": [
    "## 可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "65227085-87e6-4b9e-ba85-a312c42fc7df",
   "metadata": {},
   "outputs": [],
   "source": [
    "num = 201  # 定义网格数目\n",
    "rr = np.linspace(-2, 2, num)  # 定义 x 取值范围\n",
    "xx1, xx2 = np.meshgrid(rr, rr)  # 生成网格\n",
    "\n",
    "yy = obj_f(np.vstack([xx1.ravel(), xx2.ravel()])).reshape((num, num))  # 计算目标函数值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "20772bb5-c896-44e8-ab8a-49d14d122920",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "==== Optimal solution ====\n",
      "[ 0.49999999 -0.50000001]\n",
      "==== Optimized objective ====\n",
      "-0.6065306494726292\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\james\\anaconda3\\lib\\site-packages\\scipy\\optimize\\_hessian_update_strategy.py:182: UserWarning: delta_grad == 0.0. Check if the approximated function is linear. If the function is linear better results can be obtained by defining the Hessian as zero instead of using quasi-Newton approximations.\n",
      "  warn('delta_grad == 0.0. Check if the approximated '\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(-2.0, 2.0)"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc8AAAG2CAYAAAAZVQ0iAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAACWRUlEQVR4nO2deZwcZZ3/P3V3dU9mJvcBCSSCROVIiCsGXMAlEo5VAoqCB4chCAv7A4O4gALisRFERREFVwEvEHEBV2FRCAREIi6BLMoCcuSAJJOEhMxkuqvrfH5/1HRPT08fVdVPHc/kefOqV5OZ6u7PVFfXp77P8XkEQggBh8PhcDicwIhpC+BwOBwOhzW4eXI4HA6HExJunhwOh8PhhISbJ4fD4XA4IeHmyeFwOBxOSLh5cjgcDocTEm6eHA6Hw+GEhJsnh8PhcDgh4ebJ4XA4HE5IuHlyOBwOhxMSpsxzxYoV+Id/+AeMGzcOU6ZMwZIlS/DSSy+1fd7dd9+NuXPnIpfL4aCDDsIDDzyQgFoOh8PhjFWYMs/HHnsMF1xwAf785z/joYcegm3bOPbYY1EsFps+58knn8Tpp5+OpUuX4tlnn8WSJUuwZMkS/O1vf0tQOYfD4XDGEgLLwfDbt2/HlClT8Nhjj+HII49suM/HPvYxFItF/O53v6v+7L3vfS/mzZuHm2++OSmpHA6HwxlDyGkL6IT+/n4AwIQJE5rus3r1aixfvnzEzxYvXoz77ruv4f6macI0zeq/Pc/Dzp07MXHiRAiC0LloDofD4SQKIQS7d+/GjBkzIIp0GlyZNU/P83DxxRfjiCOOwIEHHth0v76+PkydOnXEz6ZOnYq+vr6G+69YsQLXXHMNVa0cDofDSZ/XX38de++9N5XXYtY8L7jgAvztb3/DE088QfV1L7/88hGVan9/P2bNmoXXX/4xusflqb5X3BRLNgCgkFdSVhIOrjtZKrrFnjkpKwlHqei3EOULWspKwsOqdlZ1b+3biUPe9SGMGzeO2msyaZ4XXnghfve73+Hxxx9vexcxbdo0bN26dcTPtm7dimnTpjXcX9M0aNroE6N7XB7d3WyZp+P6J3p3N1snOtedLBXdendXykrC4bp+N0p3dyFlJeFhVTurunftKgEA1a43pkbbEkJw4YUX4t5778UjjzyC2bNnt33OwoULsXLlyhE/e+ihh7Bw4cK4ZGYGSRIgSez103LdycKsblGAJLKnG2BXO8u6acNU5XnBBRfgjjvuwG9+8xuMGzeu2m/Z09MDXdcBAGeccQb22msvrFixAgBw0UUX4aijjsI3v/lNnHjiifjlL3+Jp59+Gj/84Q9T+zuSgtXxTVx3srCrm1HhYFc7s7pBXzdTlecPfvAD9Pf34+ijj8b06dOr21133VXdZ+PGjdiyZUv134cffjjuuOMO/PCHP8QhhxyCX//617jvvvtaDjIaK9i2B9v20pYRGq47WZjV7biwHTdtGZFgVTuzul36mpmqPINMSV21atWon5166qk49dRTY1CUbXI5KW0JkeC6k4VZ3RpbA7NqYVU7s7pV+lbHlHlywlEsOgAYHP3JdSdKRfe4npSFhKTI6MhPgF3tzOouWdRfk5vnGKarwNZFvALXnSys6i50sXUBr4VV7czqLqjUX5Ob5xhmsOjP38vn2fqYue5kqehmrvIcHKqC8uxd0FnVzqzuIq88OSFgtaLgupOFVd2sVkEAu9qZ1c0rT04YWK+EuO5k4JVn8rCqnVndvPLkhKFQYPPj5bqThV3dbF3Aa2FVO7O68/QrT6bmeXLCUS67KJfZm5PFdScLs7pNG2XTTltGJFjVzqxuy6H+mmzecnICoShs3htx3cnCrG6ZzfmpALvamdUt0dfNzXMMw+oy51x3srCrm1HhYFc7s7pBXzc3zzGM67J5onPdycKsbo9N3QC72rnuYbh5jmFUlc3mOK47WZjVrbDZhAiwq51Z3TE0N7P5reEEwjAcGAb9jvK44bqThV3dFgyD/hSEJGBVO7O6y3yqCicErGWsVuC6k4VV3azlq9bCqnZmdccwVYWb5xiG9Un7XHcy8JCE5GFVO7O6eUgCJwysxq5x3cnCqm5Wo+IAdrUzq5vH83HCwHolxHUnA688k4dV7czq5pUnJwysVhRcd7KwqpvVKghgVzuzumOoPPlo2zFMyXBQYnAUJdedLKzqZnXkJ8CudmZ1l+lHCvLKcwyjqWzOyeK6k4VV3arK7uWLVe3M6lbo62bzSHAC4Xpe2hIiwXUnS0U3axcDz2XzeAPsamdWdwzfTda+L5wQMBpDyXUnDLO60xbQAaxq57qH4eY5hpFlNru0ue5kYVZ3DCtlJAWr2pnVLfJ4Pk4ITNOFabK3TiPXnSzs6rZhMri2JMCudmZ1W3zAECcEeZ3Nj5frThZWdesxRK4lBavamdWt05+Oxea3hhMI1iftc93JwEMSkodV7czq5iEJnDCwOvmd604WVnWzOmEfYFc7s7p5PB8nDKxXQlx3MvDKM3lY1c6sbl55csLAakXBdScLq7pZrYIAdrUzq5vH83HCUDQcFBmMXeO6k4VV3UbJglFiLyoOYFc7s7oNPtqWEwJdY3NOFtedLKzq1nJsVswAu9qZ1a3x0bacENgOm1FaXHeyVHSzZqGOw97c1AqsamdWt0tfNzfPMYwgCGlLiATXnSxcd/Kwqp3rHoab5xhGEtk80bnuZGFVt8ioboBd7czq5ubJCYNlV5oq2Oqn4LqTpaKbtYuBbbHZhAiwq51Z3TZvtuWEQM+x+fFy3cnCqu5cDJFrScGqdmZ1x3COMzVV5fHHH8cHP/hBzJgxA4Ig4L777mu5/6pVqyAIwqitr68vGcEpM1i0qxPgWYLrThZWdRcHzeqkfdZgVTuzuvf0kIRisYhDDjkEn/70p3HKKacEft5LL72E7u7u6r+nTJkSh7zMwerkd647WVjVzeqEfYBd7czq3tPj+Y4//ngcf/zxoZ83ZcoU9Pb20heUcViPi+O6k4HH8yUPq9qZ1b2nV55RmTdvHkzTxIEHHogvfelLOOKII5rua5omTHO4WWJgYAAAUDIclE0DXQUFgyUbBV2GaXmQJH8Ul+sSaKqIouGgK69gsGj7+w49GmUHiiLC8wBCCBRZhGG6KOjyqH1LhgNNk+A4HgQBkEQRpuUi32DfouFAz0mwbQ+iKEAQANv2oOdkGGUXhbyMbdtrdOdlmKYHWRZAyLDukuGg0ES3qkhwPUJXd8mGrsuwho5hRXcuJ43WXbRRKMgol10oihhZd9lsrKVkOMhpEmzHgyAIkEQBlu1CzzXWna/57KPoVlURRhPdJcOBpkpwPQ+E+AtVm010Fw0Hege6HYdA00SUyy7yeRnbtw2g0KWhOGii0KWhXLahyBIIIfA8AkWRUC7b0PNqdZ/Ko2FYUFUZnuuBwF802TSb7FuyoOUUOLYLQRQgCgJs20VOV0btWyqa0PMaLNOGNLRot+t4UDUF5bKFfEHrWLemKnCH5gFKkgTTsqHrjXXncgps2x36rgmwHRe5XDjdRsmEKAkoFU2USuawbsOGokjwCAHxCGRFgtlMd8mCpilwXBcCAFESYVkOFd35vAbTtCHLEgjI0Dkrt9atSvCGvmuyTEd3qWhC11VYtgupVremoFgcuW9x0EShoKFsDn/2rjdSN22Y6vMMy/Tp03HzzTfjP//zP/Gf//mfmDlzJo4++mg888wzTZ+zYsUK9PT0VLeZM2cmqJguRtlBKYZYqrjhupOFVd1lw4JRYq//DQCMkomywWDMHaO6yzGcJwIhhFB/1QQQBAH33nsvlixZEup5Rx11FGbNmoWf/exnDX/fqPKcOXMm+vvuRHd3vhPJiVMcao4rMNanxXUnS0W32LtfykrCUSz639NCga0mRIBd7azq7tuyA3NmHYP+/v4R4186YY9otq3lPe95D5544ommv9c0DZrG1onRDNPyY9cKhZSFhITrTpaKbj1lHWGxLD/MnrULOcCudmZ183menbN27VpMnz49bRmJIMXQzp8Eneomb22mpGQ0wvgZTX+3px7vtGBVN8CudmZ1x5CMxJR5Dg4O4pVXXqn+e926dVi7di0mTJiAWbNm4fLLL8emTZvw05/+FABwww03YPbs2XjXu96FcrmMH/3oR3jkkUfwhz/8Ia0/IVEYjaEMpTtOowz6fhVD3ROOd5YQEEz4W9Y+sbz/eHVD5OcG1Z41uO5hmDLPp59+Gu9///ur/16+fDkA4Mwzz8Ttt9+OLVu2YOPGjdXfW5aFSy65BJs2bUI+n8fBBx+Mhx9+eMRrjGUch8nu7Ja6kzbLIFQ02f0OhJ6pKasJT+V4s9VT23iFj7iMshGN3iuooTK7OgmrumNYVYXZAUNJMTAwgJ6eHjYHDJWGBrDk2bos1urOolk2o2gM9Xnq/iD2Vk28WaJyvMUetgYMlYYGr5jK21NW0pxmZlrRnmes75BV3Vu37MBsPmCIE5RiaahznzHzHNyyBQCQn8DW6VlvnhXjz7qJVs4TlkIS3rL2wc7+HQCACZNSFtOC2uq01khLJTZNiFndMUyvYevqxAlFF2OmWTGbrjyb04+b6c66ibJ0ntSaUT7PVkvQCO2Fv6eoJDqsmWaFfH4Pj+fjhIOFuLhGzbKDJb+Cy+fYMtF2urNqoizE8zXqXywViwCAXJ61STbAlrcmAAAmyJM6GniUNDyeb5jsXlU5HZPlwO9WfZljrfKsh7y1OVMGmuXzpNUAoDxrE2prqNVe+RtZMFEeDD8MN88xTBYrzyADgMZq5VlLlqrQrFae7UbOslx5NtLerH80S/DKc5jsXFU51MlSRRFm1OxYrzxryUIVmqXzBAg+3WSsVJ6NyGo1yivPYdi8SnECYZQdGGUnVQ3krc2hp5sYpgfD9GJSFB9Rdac9HScL50mFMPM0TbMM0yzHqCY+gmp/y9on0bmr7SiXbZTLDC4iYNI/v3nlOYZRlPTujToxBEVmM8WkE91pNuOmeZ7UEtYkZDlbFXMYwmrPSiWqyFKq7x8VRaKvm5vnGCaN+AsaVRSrsR00dKfRjJv28Y5aWRHCXutEhaja0zZRVjN1COjrzsYtJycWPM9fDDgJojTPNiNJ3TShpTvpZtw0j3cnTZKsnidA59rTaspl9ZjHoZlXnmOYpJrjaF/s98Rm23qSrEDTarbt1ABkhd3LFw3taVShisJos20Mzc288hzDGGUXRjm+IGea1WYthklgmOzd3dLWnVQFGvd50ggalZNZNmGWzfY7ZhCa2pMcVMTugCH6mtm9deO0paDH9/HGeWGvZMOyRhy6k6hA4zxPGkHrQq/r7M3vrBCH9resfWKvQvUYYu6SQNfpDy7j5jmGiSMkIYlqaE8IScgSSYYk0KyQxlpIAg3ibsrlIQnDcPMcw9Ce/J5UM+KeFJIQhLirz6yFJARlLIckdEpcVSgPSRiGm+cYhlblmfToT2YruBh1x2mgSVWetPvleOXZmjiqUF55DsPNcwxDo6JII/2GV56NictAk6g84xjQwivPYNCsQnnlOQybVylOIEqGg5IRPZYqrdi4UtlDqczeBHhmdXd4nrQjrpGg5XIZ5TKb8XxJa6f1GRiGBSOGhaXjxohhhDCvPMcwmhptblPaWauawuY8zyR0x1F9Rj1P0kZR2eyrBdLRTqMZV1XZtAw1hjnBvPIcw7ieB9cLVwmlbZwA4Hr+xhpJ6ab9GUU5T4IS5/xDz/XgsXiiIF3tHaU6MXrMvRjObzZvIziBCBtDmQXjBChlrW7ZQuFF6pg+veWvGY39jE133BP3Wc1ZBdLXHrUflNUjHodubp5jGFkO3rCQFeMEADnsWRmHUQZ5nzozDa27A2g234Y5T7KEHOKAbx6k2zQ9o6uzRKYw2uMiioHKMaxOkgSyyFdV4YTANP0v+Liu1v0rWTJOADAt/z5xXL7FTkkZZitqNUyfHkx3BqmcJzQvBknExVnm0LSJrtEjV2mbZbvXD2umrbQnSdh+UHMo5q5rXC42TXFgWnzAECcE+QCxa1kzTqDFPMksGGYztmxBvjIIsbd18y4taFWfQc6TLJKri7iL2zBbEdZM67WnTdAqlMfzDcPmt4YTiFYhCVk0zQojwgaybJh1DA7NPMhXNLfpI80KtEMSkgopLxWL2F6SMG5iVyLvF4ZaM21kpFkMeAhioDwkYRhunmOYZpPfs2ycANC1e7v/P4wtmNFV35KVgInSqD5ZjOfbPCjBQjc0BprIGxlpVgMe2hkoD0kYhpvnGKZR5Zlp4xwym2oFx1gLUVPdW7ZkugqlWXnGXXXWGpFZ8qs3NWNNoK2o6M8Z2as8K7QyUF55DsPNcwxTX1Fk1jjrmmZHVXCM0FJ3jFVop9UnK5Vnfb+ils9m9RaEAXQDACakrKMZzQyUV57DcPMcwxSHItfyeTmbxtmkP7M41FzLWuUZSHcGq9DKedLVYeUZV9XZbCCQWS4BYKvyrFDRvnnQ197p1Jc4aGSgRsmv4FirPA2Dj7blhEDX/ItO5oyzzSCgGAbGJUJg3TFUoZ1Un5XzJIu0GkGraIw2UWC09srfmTUTrTdQLcfml1PT6Otmc3Y0JxC248HakbHRqgFGz9quv7FGaN0ZGUlsOx5sp7P4MtpV5+ZBqe3UE8+x4Tn0K4okaKY9yN+dNLWfrWO7cBj8cjoOfc3cPMcyA9sgCBkJWd+yJbBZCIK/sUYk3RkwUEEQsnOeIMR8TUH0NxZpoz1rJloxUEEUIIjZOVeCEodmRs88ThBE0d9SJ6RBiIK/sUZk3ZQMNGrzfGbOE4QLOhAFAWKGTD8MQbVnzUBZPeYi6GvmfZ5jFPLWZth2yjHOEU2BwVYhAB3qTnEgkW37TbZRe4VoNdmGNQrHiW8N0rgJoz1L/aFvlqaiR8nYGIoA2DE023LzHINUKhC9WcxdEnRQTemMjbKt0LHulAxUz6V/GYhSYakMDxiKon3zoJS6geZyOZiYA2BbqjrCkovhHM9IY00wHn/8cXzwgx/EjBkzIAgC7rvvvrbPWbVqFQ499FBomob99tsPt99+e+w606S26W6w5FWj7hIjRN9mMwbLw4EDLEFFd4fHLkrT7WDRrgYlpEHUpkmzVKwGJbBGVO1p94WWikWUisXEIhhpsceHJBSLRRxyyCH49Kc/jVNOOaXt/uvWrcOJJ56I8847D7/4xS+wcuVKnHPOOZg+fToWL16cgOJkqb9wduUTvjei1HcXZ0gC2dTeXIS9ok35YDbcoYOQhE4vop0YAcshCZ1qT6sKzWqsYDv2+JCE448/Hscff3zg/W+++WbMnj0b3/zmNwEA73jHO/DEE0/g29/+9pgzz0YVx4iA9bihOGqURjxfEJMM+9x2pkotVjDh5lvawfBJQSOe7/WB5k0FM7vjuxuioT0NA60NtI+6oHYa7PGVZ1hWr16NRYsWjfjZ4sWLcfHFFzd9jmmaMM3hRPKBgQEAQMlwUDYNdBUUDJZsFHQZpuVBkvxRXK5LoKkiioaDrryCwaLt7zv0aJQdKIoIz/NXkVdkEYbpoqDLo/YtGQ40TYLjeBAEQBJFmJaLfIN9i4aDXHk7bIdAFAUIAmA7BLomwjA9FHQR23Y66MqLGCz5/zYtD7IkgABwPQJNEVEq+78bLHnVfbvyIoyyB1UR4HoAIYAiA4ZJhvfdvR2DZb/qKlmAJgOOBwgAJBEwHd9MKvtUHoum30doOf5+AvwBNzkFMGygoAHbBoafU9CAsg0oEoZ0++9Vsvzf7d64DV2Kh0FbRJfiwXBkqJIHlwi+bpGg7IrIy8P7VB5Ljoic5MH2/OMnCQSWK0Kv33dDH4q2/xqmJ0CePjWSblUGjCHd9celcgzdV7eATJ4CWfbXN83nRn82RcODrgmwHQydJ4BlE+jlN1CUJ448T0o28jXnrCAAjkOgaSLKZRf5vIzt2wZQ6NJQHDRR6NJQLttQZAmEEHgegaJIKJdt6Hm1us/Ot95EvlBAuVyGoirwXA+EEMiyDMs0kdN1lIpF5AuF6qNhGNA0DZsHPEAQIQoCHMeBquVglorQ8oXhR6MINZeHY5sQJf9y5bkOZEWDbZpQdR27d7w54jm2WYYkyyCEgBAPkqxg445+yJoOp1yCnMsPP1plSIoK4vomJEgSXNuCrObw8q4dI/c1DUhqDp5jY69uHYIgwHUcKCF1W+USBFGEZZRgGUb1OZZZhizL8AgBiAdRVmCbZWi5/KjXt8oGZFXFKwO+7undgG3ZyOVyjY93ToNjO0PXCBGOY0PTRu9bKpWg53VYpgVJ9k9az3WhqCrKhgFRlGCUSiiXDJSKRZQLU6C5r0FRJXgeGfrsJZh150nl0ShZ0DQFjutCACBKIizLga6P3rdUNKHrKizbhST606lsx0VOU1Asjty3OGiiUNBQNofPWdcjUFUZRsmEKPHRtqHo6+vD1KlTR/xs6tSpGBgYgGEY0Bvc9a1YsQLXXHNNUhJjxSj7laeuxVR5bt8OxHBzbtgABKDVMpNk61YQkYA4IojiIY3ue9K31f+fyf45FkR3KLZvA6ZPofRizSmVHRCBQAjZItdvzQQQrc+xryQB6Kw/3jINQCBQ1NEn4eZB0zdPz4Mo0+/33zxoQhAEeI4DyQImhWx9tsolWGWDmp6tRQkTlPj7rQ2jhHJ5ZLXeb8/AJHVr7O/dCeUS/SWaBEJIyvMZoiEIAu69914sWbKk6T5vf/vbcfbZZ+Pyyy+v/uyBBx7AiSee6N9hNTDPRpXnzJkz0d93J7q7s7f+UasBIkXDv2gU9BiMJcbJ/ZWM2EKD+MxOmmPjpmiLEKZPa6g7MhGbb8NE9RWHmm3F3v1CvUfU/k5aA17Mkp8Pq+X972WrJtgkCdLcW6+dFnE34xpFX7deGK07y024fVt2YM6sY9Df34/u7m4qrzmmK89p06Zh69aRd0Rbt25Fd3d3Q+MEAE3ToGlshB63G1lpWjGZZ8ypOObQFLiKCWXZMGsxPQHYtBV5zY086GgUEfs/w2TdVs4T1uLVHdu/y9o2kK1JA7Um3sxIK9o10DXPuPtBLcvvO2xknlnuA7Us+nOCs3XWUWbhwoVYuXLliJ899NBDWLhwYUqK6BFkSoIkCdU+WWokECcnif5GNm1mxjgBQBL8DaBs+DEf81jOkybQnGbRV3LQV8p2UMLrA+WGFbEoydW+UNrEOZ1FkiRIUnZSj4IiSfStjinzHBwcxNq1a7F27VoA/lSUtWvXYuPGjQCAyy+/HGeccUZ1//POOw+vvfYaPv/5z+PFF1/E97//ffzqV7/CZz/72TTks09COaykb+twfyLDsGb+YYjSZEvzgp6VJtqgNDPROEljPihr8z87gSnzfPrppzF//nzMnz8fALB8+XLMnz8fV111FQBgy5YtVSMFgNmzZ+P+++/HQw89hEMOOQTf/OY38aMf/Yj5aSpBJ8K7LoHrUurSTsA4K2bjEoCW7CRpppuKgcZ4/KmeJzFTa0LE80C8hENAOqSi33MdeG78VTNtA3VdF67bulk4iwbquvTPE2YHDCXFwMAAenp6MjNgKEyCDLUBQwkZZ4Wi7estKGxdGNvp7rgfNELfZ5B+zygDhsJeIGlcxOsrN2doQWk5l/73MiwV7bOnTEjk/Wj1g7YaMFRPlvo/4xgwxFTluacTNnqtaHhVA41MzMbZqGmz6IgoOuydmu10d9yMG9NnUTQcFI3s9x3W45TLcMpsNd9WqGhPqjmXVgVqGAYMg94Um6QwDB6SwAlBx/F8CRhnI7oYqzgrBNVNNm2mNxqXAl35cPF8SVadrYxFzrE2PniYeu2vD5RjTTQC6IzEzYeYWpOl0bf5jmO/RsPe7f0eSqTA706C4WM0znYV2KAtYtBm79QMoztyBRrD55J2MHwz2lVkTrlUbf5kjUbak6hCO61AK8HwQclK/yeP59tDibrIceTKM2bjbMdYrzwrZKUC7SQYvh1RL9ZBTITFvs4KrbTHXYV2UoHyYPhhuHmOYSIFw8dknGEqrUr1lo8hVg0A7Jd3tPy9sv/ESK8bRXckAw0RnBAkLCFrwfBBq6/hAUPsNd+20145BnGZaFQDrQ2GD0oWmm955bkHErXqBCJUnhkwToBe5dnOJMM+r52pMlsxx1R5Rqk6wzRb0qg8N/btbvq7WdPGdfz6zQiqPYm+0DBErTzTNlBeee5hdGKcAGCYISrPjBgnABhOtMozqllGef1GRhpVd9zVZzuMsj/SNh+g8sxKHxYAuJYfcRek8mxlkmGfQ8NUw2iPy0CjVJ+m6d/chKk8s0DZpD+anJvnGEaRA0auZcg4AUARg5tP3IbZ7n1rTTSM7nrS7P9UFPqDs+KuOgFAlFtfvqIYZhDqXzeKmbbTXk9WDFSWO1s4Pa3qU4khUpCbZ0bptOoE/PU306KjxajR3vTTMs16ak00iO5WpGWgWYhJiTLKtFm+S1ym2Yza9wtqpFGyaeLqBw1joIR01jWRloES0D/JuXmOYTwvwAkTQ9XZaRxdM9lZMcxG2C/vgOWpkPftTe5NKTXdBjpPYiTq9Iz6aL6kTbMRFQ3tTLSTWME4qtCgBpr2uRKVOHSzN5luD4BG1Qn4zbYtm24pGyetIHRFJFDE4ZPdfnlHpo2zggIPwvqdHWmNI0i+3fmkKCLVptukAslFWYEoK9jYtzsTxllLO00V7VGJYz5okM9NVmTISmc1Vxr95opM/5zk5pkxaBknABgmgWE2ueOKwThpYbgiDNc/NVkwzQoGJBjwv6RZM9BWGGUXRjneRZSb0YkJvLF5J97YvJOiGvo0M1HXKsO1OjPANFaWMcsmzLKZ+Pt2StmkHwLCzXMMU9BF+gthN4D2xb4ge1A3vsmUcQJAXnCQF4ZH9SWin8JNUEGXUdDbVxO0K4ZOLv4b+3ZDUDQIChsL19ebqKzpkLXOR6zSNtB21aeu69D1znUnXX3qOv3pWNw8MwTNqhNoEc9HseqkbZz2yzuw65XdKHrxpd7ERdFTRumO2uScZPVJM54viSbbigkRywCx2Aopr2inGS2YpIGGjefLCnGEJHDzHMN05cXRQQkJLWgdhYrJFEQbBTF7WavtaKU7y1V0V0GJNaKvEVEu+PXVm6DqEFS25hsC/t/RN+BRjRdMykDzhQK1iL4kq884QhK4eWYE2lUn0KDyzHA/Z625NKrgWKCd7rAGGvj4dvi5ZjUYvpZG/YYsVp4ViGXg9Te2U33NJPpAaVeeSRkoj+fjhKLjJclaQMs4GxkKi1UnEEy3/fKOUNm5Scz9pFV1Bm2yDXuRbzZqlcWqs0JFe9CpLUGhOY2l0fQVHgw/DDfPDBBH1QkApXJNPF8G+zmbVWIG8U/LvEB/BKj1yq5A+6n79YZ+7aC6wxooDVoFxJeGFsIuZCQYvpZW0z2IPTTqU81O9mtQ6rVv7NvNhIGWy/Tj+ZIITjDK9G/IuXmOYTR1aI4nQ8YJABromGZQowzy3CBmSkt3JDoITNC0ZOZlAnSbFoUO5kkCwPrNA2332XdGd0fv0YxG2mkaaFyoKv0KLgk0hX43EDfPlImr6gQAl/K1PAnjBACng5i7Tgwz6Os2M9IwusNUn3E33bqu30LR6mKQxsT2dsEHYVN6gphlkOfQMNRm2mk148ZVfbq0LypDxF19uh593dw8xzrbtgEUBvUlZZxRiMsw271flKbdWtJovo2LIP2dYapOWolBUQwzzGvGVZnSqEKztpzZWIOPtk2ROKtOAJAkQMrQJxzUOGUQyAGCnK1XdiVunK3eP6juWoIekzjnfUqSCClDJ0pQ4xREEYLYWPf6zQOxGCet92mlvQKNGwhazeSVmyNJkiDFsEIJEG/rhiTyVVU4ITA3bQMAdNqL0umFO2y1aQ5F3HWh8Rp8aRpmIyp6zDlTATTXHTsR+z1N02/SivNiEPQiHsYwiDM0CKQmZCgJw2xE2Gq0kfZGZKkC3TwoIW/5Uz7yYGvUrWnzAUNjhrirTmzZgjyFvv2kc1YBQBfYMM165HU7oMwJP2Q1aPNtXH2f+QDRfFmkNpovLdNsREVLKxMNEyuYpYFEuRybzcB6jsfzcUIwWPa3NInSx9kobCDrxgkARUnFrg1GJK1pJhB1GpJAK5IvbDNlJSQhS8ZZSytdYQMeOm3CpdV8u2F7OdZ4vriabnk8HycYQ1NTunL+FpWkm2sr1Mbcpd2vGYaCa6Hg+l/SLGpu1toRdzxfXMk3b+x08MbOlJrIA9KsTzRKtGAWDFTL04vnSxIezzdGiL3JdohOKs+0jBMYrjyzaECtKEoqitLwlzSs/iDHLI5m9CzE84U1hvWbByA4JgSHjeWx6g00arRg2uuWmqUiNmyPtzkrjuqTV56c9tQEInRaeUal0yZIdf2bUNe/SUlNctRWnhUSvwGIEIgRZ+UZpNqJYpwAQGQNRGZjSTJgZBXaSah9JwbaafWp5QvQ8rzyBLh5Jk5SVScAFE1/C0sn1U2nxmm9sgslUUVJZC/JpJnuMAaaRt9n0XBQNJo3f7aqBJJYgqyW2gpOcC0ILv2KIm7Wbx4Asc3hiL6E6cRAzXIJZrkU++dOu/o0DL4YNqcVdVWHrvpbGNI2TgDIERs5wl44fCvdNCtQ2k23ek6CnkvWBCuEqaJGNX1KCojE3uo7APDGDhOCHP0GMa3mW1XLQdX85qykb5w6IafxeD6mSbLqBAC7Ukww0LJVay62UPlS0jPQXet2td2nnt7ZvaH2p6U76eQh2/aj4mhfCuNeIksYilwLF0uRDQTPxRtbdmHWvtED1juZwhJ17qfrsHdTCwC2w+P5OM1o0NfVJsBkFGlVnfVVmUjoXA6jGGaz5wcx0na6rVd2dRzpFweiGD1LuBM6qToBgAjRdW/ZsCvwvtP36Y38Ps2oaF+/eaCjiL+kDVQQRl5UGi1bRguaebdxnOPcPMcwSV0SaRonAAgd1BKdGmaQ121mpEF0BzXQjqrPkElDHXhQIjSfLxlceBizbPdcOmY6rD1NAw2LkPWTpQlCDFdD3ueZELE22TYZYWm7/haEqFUnbeMEAEeQ4AjhGhF3rdsVm3EGfa+gumn0f9Ls97Rtr9p0mzVaBQ0IxIVAWp/gWzbs6sg4W71mJ69brz2toIewTeuu48B1kptbS2vgkB3DajDcPMcwQQcMpRHB18pAcp6NnBesbyVJ02z03rWE0Z0l9JwMPRe+EarVgJF2F2UaA16IqICIjQeCxGGaNN+nkfZODDSpAUSKloOijWzqZWHgUE6j38jKzXMME3c8X9Sqs13lVR820Ig0TbOZjiC6KwSpPpOatpKFkIRGtDOTZiEJSZhmp+/ZTHsaBhqm+jRLRZil+OL54oKHJAxx0003Yd9990Uul8Nhhx2Gv/zlL033vf322yEIwogt6XDjNJpsgWAhCUk31wYxjUZhA7VkwTTr2bVuV1vdWSXueL56glzkg5hIfUhCUtVmM8K8f6uAh6xm9QLNQxLirD5pNN3ykAQAd911F5YvX46rr74azzzzDA455BAsXrwY27Zta/qc7u5ubNmypbpt2BDfiuVZIgvB8FFoVcFl0Tgr9G0xA1eeQOd9n1FufBrdyGW18mxHbfWWpmnWE8RE20ULRjXQuKtPXnkOw9xo229961tYtmwZzj77bADAzTffjPvvvx+33norLrvssobPEQQB06ZNC/T6pmnCNIdP6oEB/yQuGQ7KpoGugoLBko2CLsO0PEiSP4rLdQk0VUTRcNCVVzBYtP19izYKjgej7EFRBHgeQAiBIgswTIKCLmKw5KErP/xYKnvQVAGO44+ElETAtAnyubp9d29H0fT7NW3Hn5oiwB8kpKuAYQMFDdg24FeggyZQUAHTAWQR8Pq2wiUSNJGg5IgoKB4GbRFdNY+GI0KVPLhEACGAIhLsfm0AeUFC0VNQEO3qo0FkaHDhQARAIIHAggRdcFD0FKjr30RRzqPgWiiJKnLEhi1IEAmBAAJHkKB5DsqQkfcsvDm0b1FSYa97E5asQFZzIBDgCQIU10FZ0aDbJoy6R1NWoLguPEEAEQRIngtLUpBzrFH7lmUVqmvDFSUIhEAkBLYkQXPsUfsaioacbcKW5GHdogTVsWHKCoTX+4GZPVXdedeGKcqQiTusm7goCwrynoV+NzfqGKpw4UIAIEB+qR/uPhORl0d/NkVHRL4M2J7/uUsiYDn+Zz+40xlxThUND/mcCNP2IEsWBAFwHAJNE1Euu8jnZWzfNoBCl4bioIlCl4Zy2YYiSxi0BuB5BLIiwyyb0HUdpWIRFrphlorQ8gVYZQOyqsJzXWwZNCFIElzLgqzl4JRLkHP56qNb7IcgqyCe44+CFET//2UVxDLwxk4HomOCyBoE1wSRNAieDTI0GEsgLoioQHAtEFnDznWbIAkqZGLBEVSIxAaBBMD/fDxBgkRsuDX7VB4lYsMT/M8d8KeQiMSFKygN9rXgCgrEoc/SH8Ppwmuy77b1FqbNyDfQbQKCUDVQofq32iDikG5CsGFjGXtP1CAoGohlQFD14UfbhCArIJ7r6xBFEMeGoGgo77JGHG/HNCCpOXiO7S/CLQjwHAeSqo34bCxlAkyjCFXPw7FMiJJvD57rQlZUWGUDgijCMkqwDGP4szfLkBUFr+z2MEV3IMsyTHP4PMkXCtXHsmFA1TQ4jgNBECBKImzLRi6XG7WvUSpB03NwLBtSrgRBEGA7LnKagmLRHHGuFgdNFAoayqZ/zhJC4HoEqirDKJkQpT18tK1lWVizZg0WLVpU/Zkoili0aBFWr17d9HmDg4PYZ599MHPmTJx00kl4/vnnm+67YsUK9PT0VLeZM2d2pJkMbO/o+Z1g2EAMN1yRsF8PfidtSApKNRXc7jfSDcMOiimrKMtaKL1hjksotgc/70plB8UY4ssa8ca2QWqvJXg2dmxKbym3IGzb1PhcEFwTgtf+y7kpwvHa8ma0ynDT7vbVp1UuwSqHD7TvlH57r46eXy7Rj0IUCKE0Iz0BNm/ejL322gtPPvkkFi5cWP355z//eTz22GN46qmnRj1n9erVePnll3HwwQejv78f119/PR5//HE8//zz2HvvvUft36jynDlzJvr77kR3dz605rT6O4HhXNtCg66VJPs6wzZPloZGIeY9O9PNtPUYQ3FruuNfFIMmFLWb99lqvmfLxbGbzPUUxo98TnGoyVbs3W/UvlFybVs1AbZrVgzTXLltvd9V4wrZz0GunxtaabINEmwfdQ5olLmf7UITzFIJAKDlG18L4wpMANBRYELflh2YM+sY9Pf3o7s7+pzaWpiqPKOwcOFCnHHGGZg3bx6OOuoo3HPPPZg8eTJuueWWhvtrmobu7u4RWyYJsHqG6fgba5iCBFOQmDJOALBlBbY8PPAmqP52NxetblhoTDMyLQ+mFW6eZ9rTE7Zs2AWRuBDbzPPMCvV9oIJnQwg4rSnJAUTt+j4d24TTItA+7fOiGZZF/0LIlHlOmjQJkiRh69atI36+devWwH2aiqJg/vz5eOWVV+KQOIKks2zrkUR/o0USVScAyISguDH889JG9FyIHhsX81okSaj23ccJraqzYkR+jyY7iTe1BkoEqdoXGoQoBhrH3E9Rkqt9oUnTyahbieaFcAimzFNVVSxYsAArV66s/szzPKxcuXJEM24rXNfFX//6V0wPEV+WOSKs2VhLUqEIUUeT9r/eT1dIA97cUBq1xQGt6pMV4g6DZ50sjQpuRqefYVarT9owN9p2+fLlOPPMM/Hud78b73nPe3DDDTegWCxWR9+eccYZ2GuvvbBixQoAwJe//GW8973vxX777Yddu3bhG9/4BjZs2IBzzjknzT8jEVyKiWtJTdjftW4XvBzdxXaDGmOj/SbtE7yf2xMbXzR2rdsVeoWWeuJcacV10x/2ELbqBDrLQK5l2/pdI/49Zd9eKq/bjC0bdmGv6f6lN8xfECUDl3burecy2A8EwKV5MRyCOfP82Mc+hu3bt+Oqq65CX18f5s2bhwcffBBTp04FAGzcuBFizXIib731FpYtW4a+vj6MHz8eCxYswJNPPol3vvOdaf0JidEokSrLVWelSlMoLXtEo5qsvEYQE6WlO2k0lY0GqPqqzQuZf1yh3iyD/J62ofZtLmHq3j2hn9dpiHxQmq24IisMrG/YAFWlb3VMjbZNg4GBAfT09IQebRtbf2eIJtttQ10eU2puPKOYZ1J9nRXzfEv3BY83ovXZxNUEC7Q20Xa6g1SfrUbeNqs8m464DTjadtub/tSDcdPnjtq3WT9T2JG2NPo7681T9fwpGZYYrKWinWkGhYaRVrRPnB1+CkYU86Q18nb3zjcBAOMmTGr7/LhG3kYZdbvutS141wHH89G2nGB0af6WNJ0YJwDotgm9xYi+ZsTZd1n7Hs2IqrtTmt4QBbzR6sor6MonF89XTxTjBPwpKkGmqWxbv4uacdJ6vYr2KH2gacb3aXoBmk63WyUJ8nkez8cJQX08XxJVZ6fGCQCGosEI2TwUt2nWv1ej92unO8jgoVbHL65+Z1rxfEkPFpKJBZm0DhqgaZo0XzuIdppEGXnb6PPk8XzDMNfnyQlOu1D4LNDIUMJUb0maZqP3rm3GTaPqpEGSofBRaFadOS2qzjhNs9H7hG3KrdW+ZcOu0AtsJ9X3WU+jUPikecvaJ3TTLQ+GZ4Qs9HcCnQfDJ1F1NiJo5ZmmcTbSEER3FoMfwlaeYacitKp6OmmCbFa9JWWcnbxnvXYWprAA4SrPLE1Z4UuScUJRuyRZGgtet6OZkQTpO8yCcVaoaEmrz7NTkl6SLAytTMUR1FHVZxrGGeW9G2kPa6BhbzxoNN02W5Is6/DKkxMKw/I31jBlBabc/GKeJeOs8OaGUlvdFdpVn0kHJhhlB0aZvfl7ErEhkeGKOU3jDKuhXjsrWGYZlsleEEY5hvObmycrREgVUiR/i0LcTbatDET2XMhNYu6yaJwVWummRbPPpZOWBUURoSjJXwraVU7tKjEPEjz4J3gWjLNCEC212mvJYvVZiyzLkOXgQ2Wy0nSryPR1cPOkTNp5trV4xN+y1mTbrvJqllmaZeMEgB2byoGzVrPU9+l5/sYeBOEyepKjvYFmV3s9tU23HiHwMhANEDbn1ovhWHPzHMMQ4m9xQ7uZ0RP8RaNZgwgCdmxmr0mLEIK4slLiCCevIAzdZmWp6qylla6K9kbEXX12BPH8jTGIx82TE4KozbZx5tgGqbgaNX9mveoEAMl1Ibl0mm2T7PdUZBGK3NmlgPYczyAG4gkStr1Bb3HtOGhmoJ4gRY4X7JRObmhEWYEYoF8/a8i82XYPJeIqKoYNlDZtoyxmJHFc5C1ZgVXzBWXBOAHAVlXYqhpYb1pNt/VdC4bpwjCTXUqNRrUkERuKkP0l4BoZaLsBQ1mbulK5ObLNMuyQA4ay0O9pmvQHZ/GQhDFMQQOIzF4TS84eHiLMinECgFpmr8kWAAo6m5eBvtcNsHoJCxIrGIakQhO0XPB87yyh6/SrZV55UiRLg4WAoZAEO9xHnHaTLRAtni8LmLoOU9cBxGv6tD8jWvF8tAhadamiDVXMju5W1FefQeL54qw+ozbdZimeL8ygIR6SwAlFVw7oUuKrPOPql6uEDbBUdQKAZhjQDIPa61E5vgGa/LMcktCMbet3wfIUWB47umsNtFFIQqckMXCIhyQMw2abBycQg2WA2CLyGWi6DdO/F2fVuWlTsFF3e+0VfrRvperULP8utz77thE0FsrulErVOS788pItiXOkLYBq1em47F3GKlWnK7Q2/yi5t3Hx+kAZvbZfdapD5zor8GD4PZGIg4UAoPBWH8DOjXkV3Tax4/USaFpoUNOs3z+MidKsOpMk6aqzVYUUpKmyUsF1WnUWX32r7T6Ft43v6D3q2bZ+F6bs20u96kyKqFXn5kEptvU9g8Dj+TihKDkiSk7wjzjO/s4wlGUVlkbHOjdtIqGNs/75QbE0bZTuJJueo4ZhlAwHJYO9eD5FdKCI4XUXX30rkHGG3TcMWYjni9IyYJUNWGX2bhINg/6x5uY5htEkD5oUT5NtmP64sFMyBjcMQLE7P9k7Mc0or6PYNhXdSaNpEjRt9HSCRgMysjDtoIJLJLgknJ6oRkjTQLet3xVqnmeYgUNx93vKqgpZZa9q1lQ+2pYTAscT4HjsJfW4kgRX6uwiTcs4w7xeVN1pR/U5jgfHSb9fPAi1g25EeBARXHenBkizChWIB4HBpB7PdeFRCgKhQdARt04MmdPcPCmRtWkqACAMbSzx5oZSx7ppG2fQ122mu5Om2ySShgTB36JCK10o7NSMZhnIjaBZOdJ4rTff2A32vp3AlkH2ltwD4jnS3DzHKGTTZkgigSSmG+IcpaoSXQ+iG+2uPC7jDPL6nehOE0kUIYnsXQqCmmccfZadvmYY4wfia7oN2+8piBLEDluF0kCM4fxm7xvDCYzpijDdYB9xmMFCcVdDjiLDUcIPBI/bONsRVXcUaA7uMi0XppVMU1wnfXL1QQOS4EJqE88Xh3HSQBJciMhO82dQXMeCY0Wb9pFmf7ll8/U89yw6mKYCAHnZy8Qcz6BUmjcV04RiZrd5qJlJZ113M/K6jDyDEX22J8P20tPdiTHbnoy+19kKAQEAWc1BzbE1xxMA9BwfMMQJwaAtho7nywK1MXdBSbrqbPR+rXS36/dMc9BQHPF8cQckAO3j+ZKoOqO+B0vRgrU45VJm4vnCwEMSOKGIM5ovCFENgdWwAVZ1sxbNV4GlaL56omjPQtqQnMtDy+dS1RAFHpLACQVLlWdtZRa28ky7r7NClIo5C2QhGL7dgJhGy3q1qt6S7OuM8l4V7XEt5B3XfE9eeQ7DxpWVE4kuxaNefSYxdYJ2wHpc1Js2K7rrYTEYHgBzwfC1ZEl7mCZ2OZfHmy57o2155ckJRCWmreiIKAaI58tKLF8FK5eDlQvWNJSVqhMIpztLFA0HRQbj+VTRgdogni+NEbZh37OZ9qzjmAYcM1s3iEGCEuKI5+N9nmMYPaZovrhRTPpNLEnAqm49x14lAQC2x6ZugF3tksrezSEA5DQ+2pYTAtsTYLMYzydLcGU2Li61lW873Vldn9S2Pdg2ezdakuBBEtjTDUTXHucC2UHwHBuew94oYdvh8XyZJIvRfAAgCv6WBmFG2tabikAIBNK+OTZLTbZAcN1hibufWRQFiGmdKB3QKKUnzVCEMO9dqz2uQUNxIIgihA7SetIKSojj/ObNtmMYAdkyl6DEYUBJwKzujPtmM3MJE2+XNVjVLmT9ZGmCEMPx5uY5hrG9yh0iW01bna6okhas6q402WZj7GdwWG2yBdjV7jnsDXICADuGlWAi1d+GYWDTpk2jfv788893LIhDD132oDMUz1dBsSwoEfMz04RV3XpOhp5j7z7a9iRmB96wql1SNUgqnYXqkySn0T+/Q5vnr3/9a+y///448cQTcfDBB+Opp56q/u5Tn/oUVXF7NB3m2gJshSTUwmrYAKu6kwpJoD1xP4sRd0H7PbOoPQhOuQSnnM2Bb63IREjCV7/6VaxZswZr167FbbfdhqVLl+KOO+4AAJCE+nxuuukm7LvvvsjlcjjssMPwl7/8peX+d999N+bOnYtcLoeDDjoIDzzwQCI60yaOkIQkCBI2kKXBQhUtnYYkpJVvy0MSkicJ7XGkDMm5PORcnvrrxk0mQhJs28bUqVMBAAsWLMDjjz+OW265BV/+8pcT6Uy+6667sHz5clx99dV45plncMghh2Dx4sXYtm1bw/2ffPJJnH766Vi6dCmeffZZLFmyBEuWLMHf/va32LWmDa88k4VV3VmI54sCq9UbwK52XnkOE/rKOmXKFDz33HPVf0+YMAEPPfQQXnjhhRE/j4tvfetbWLZsGc4++2y8853vxM0334x8Po9bb7214f7f+c53cNxxx+HSSy/FO97xDnzlK1/BoYceiu9973uxa02bsVx5ZhFWdT+79u/4798/lVjLES145Zk8vPIcJnAv6u7duzFu3Dj87Gc/gyyPfJqqqrjzzjtx4YUXUhdYi2VZWLNmDS6//PLqz0RRxKJFi7B69eqGz1m9ejWWL18+4meLFy/Gfffd13B/0zRh1qzJODDgN32UDAdl00BXQcFgyUZBl2FaHiRJABl04boEmiqiaHjoyosYLI18NMoeFEWA5/nN24oswDAJCvrofUtlD1oZcDxAACCJgOkAeRUYLANdueHHognoKmA7gCj6+1tlGbrsYeOgCl1yocsiuhQPg7aIguzB9ATIAkAAuAQQPRkGJOQFB0VPQUG0q49lIkGBB29oXhoRFZQFBXnPQlFSUXCHHw1RgUpcuIKI3ZoOySOwJRmaY8FQNOi2OeIx51iwRQmlvD/Nw5UkKLaNHRMnQjVNmI4DzTBg6jq0chm2okByXRBBgNkjQLRsOLoGxTBh53NQSuXqo5NTIVoOiCgAggDRceHmVMiN9tU1SGULniwBhEDwCDxVhly2Ru1r6xpkw4SnKhD8DxOeLMPUguke0PJQPBdlWR11PHTbxE5JHzqGAgABEvFgCRK6iTTqs7HKMnTJg+0JEARAEgjsQf98GHGejPdQNDzkcyJM24MkChBlC45DcO9vnsCyC24EIQR//J9N+Po3lqNUtFDo0tC/+y3IsgJCPHgegazI2P2WDS2Xh1kqQssXYJaKcFwJjlWGJKsgnj+q0TMNEMeGoGgglgFB1SGWB0BkDYJrgUgKBM8/JoAA1SvBFRTIxIIjqNVHiVhQBBuS6IEQv2VLEAhcT8Q4pQTHk+AQCZanQBVtWLILRfbgev7kBEEAXE+AInuwbBGa4sK0peqjKntwXBGi6N84eJ4AWfJgOQ32VTzYjghJJCDE//5IIoFdt68k+NF7tic11K2ILmTBgSK66LcLUEUbEilAIjY8SKjMAvUECRKx4dYcD5lYEBzdP4aiAoG4AAQQQYDgOSCSCsEx/ePsmPAsFcQ2IcgqiOdAEER/f8/xfzb02ZR3WZBzeThlA3JOh2tbECT/+0A8D5KiwDHLcE0TjmnAGperngOWWYasKPCGvg+iLMM2y6POEy1fgFU2UIIMx3EgCAJESYRt2cjlcigVi8gXCtVHo1SCpufgWDZESQQEAa7jQNU0GMXSiH237xpAoaChbNpQZAmEELgegarKMEom3to5GNhnghK48vzHf/xH9PX1Ye+998a0adMa7nPEEUdQE9aIN998E67rVpuNK0ydOhV9fX0Nn9PX1xdq/xUrVqCnp6e6zZw5k474FNAlDwWZrWoCAFTLhsbgqFXWdP/qPx+vGicA/Pg/foUrv/AdZipQx5NSXQy7E2xPhsPiaFstx2REX06nP0I48Jk3f/58HHbYYfj973+PuXPnVn++du1aXHHFFWNmEM7ll18+olIdGBjAzJkzkddldHf7/Vn5vH/YCgV/H1KzykBB9+9H8rnGj7V0DbV+NNy3rvVv3NBjXm38iJpzg+T8uVjjVL8KmKT5j/mhaSuFOh226KAA/zl5yR35KIycH2V5Ngrw+2r0oTlf1Ud3eA4YqYRHD3Xr5Byr4aMOwCqN7EOxFf+54/r7/T9tyJC0mhYBrd+/wCuG/zO5yWMtSqkceF8MrbrUdN+652gFIZDu7qH/1W3/f+qPR6/buNlXFbRRn01PbvScO6HLfxxxfuTE6rlVOT9/8bsn8S8X3QRCCM765CIc+K598bnLf4Sbb7oTiizh69+4BD3y+FGvP47457o61Ler6jp2DZQh50b29YqDwvA5OXSx9XLdAAAi+7+otWhL9I+HKyijHm1iw24wTU8iftOM4fqv77gybKcM2xltSpbt/6zyu/rHWswQ+1ao3adAZDiuf41opNt2FeQkEyZR4Azt2yUo1b+5FldQhx6HjweRtYbHsPL/1d/JGkQ1Vz3+DRn6Xa7Xv8JUPsf6z9P/WR7m7n4o+QJUXR9xDtSTyxdG/K72Md/VeM5lLq83fBx1wQKg5/Mj9hnf659b+cJokywUNJRK9LtTAleet912G8466yy8733vwxNPPIG///3v+OhHP4oFCxZASmhy+KRJkyBJErZu3Tri51u3bm1aDU+bNi3U/pqmobu7e8TGKrLgb6whuS6kGCY1xw0run/266dwxjk3gBCCzyxdjG9/YxmWfXoxbvz+FwEAN37n57js0m9mvgL1iACPMHiCg13tgiT5zbmMIcegOdSAoWuuuQbLly/HBz7wARx44IHYvXs3Vq9ejd/+9rfUhTVCVVUsWLAAK1eurP7M8zysXLkSCxcubPichQsXjtgfAB566KGm+48lCMBmQJ8gtM2M22uv7Fx4qloC6G5F7+xeOoJa8LNfP4WzLv5J1Ti//53zIAgiCAGWLvsIvnvTsIFec9kXM22gwtDGIklo33dGDDf+hPgbY5AYroSBzXPr1q246KKL8NWvfhXvfOc7oSgKzjrrLLznPe+hLqoVy5cvx3/8x3/gJz/5CV544QWcf/75KBaLOPvsswEAZ5xxxogBRRdddBEefPBBfPOb38SLL76IL33pS3j66adjH9zUMdOnd/wSLvE31vBEEV4H4dNpkXXdjYxTFEW4LoE7dKKcc+6wgf7H975P1UBpX8wFgUAQsnWCF942uqm7EVnUHgTieSAeeyP4XY/+sQ7c5zl79mwccMABuPvuu3HiiSfiwQcfxMc+9jFs3LgRl156KXVhzfjYxz6G7du346qrrkJfXx/mzZuHBx98sDooaOPGjRBrLmCHH3447rjjDnzxi1/EFVdcgf333x/33XcfDjzwwMQ0p4UmsvflBADZZm/+G5Bt3bXGuewT76saJwBo6kjDP+fcjwAA/t8FX8V/fO/7AICrv/7VzIWCu152b1Tawap2SWFveg0AqAr9ZtvA5nnrrbfitNNOq/77uOOOw6OPPop//ud/xvr163HTTTdRF9eMCy+8sGnluGrVqlE/O/XUU3HqqafGrCp7lJyhQSKMzfW0NL/Tv3agDQtkVXe9cf7g66ePuMEsGf7Ao67e4eecc+5HUHIn4LL/t3yEgWYJRfT7l22XvQs6q9ods5y2hEgYBv1R8IHNs9Y4Kxx66KF48skncfzxx1MVxaEDa6ZZQS2z+QXNou6f3f8czvrSb5oaJwAU8o0v4J9a6neFVAxUEASc84V/T7wCnbJvb8NlySxGp6kA7GqXNfYStAAgn89APF89++67L5588kkaWphFGD8jbQkNSTOeL8zgl0n7jEwsCRpzl6VBQ0B88Xzqfr2RnvfzB57DWV+6D4QQnPvJf2xonEDreL5PLT0bX//utwAAP7zxJtzwpS9kZhBRo4i7oH2OcRDmvWu1T9m3NyZF9Ok0nm9Gk2kqcRNHPB+V25/x49M7YTnNYTGaDwBTEXe1Bt5Od/1NQpz8/IHncObV94EQ4NxP/iO+v+K0hsYJoG0ofG0FesfNfqzlxV/6Wup9oCzG21WIqn36Pr10hYSExWg+IOV4Pg57VKrOPGNrelaqN5bSeoDs6B5hnKcsaGmcAKpV57ie5q+ZRQOtVG6VQAKWYFX7cNXJVsGUiWB4TvYR9vKbkYMGwyv7T4xbUijCBKxnqek2C8Hwo4zzshNaGicQfEmyTy09G5d/4wYAwB03fy/1Jtxm4eppNN2GfU8eDE+P8eqGtvtkYkkyDjsYjgjDofsRR+1/C4OtabC17K9WX2/caev++aqXGxhn+5sLo+zAKI+O+mvEKWd8OjMGqohuddQqa2RJ+6xp49rvNIRrmZhM34dipxzw/A4DN88xjCp5UCU2mmxr+wNl24Fs0z/Z4yZN3T9f9TLOuuGx0MYJ+HPgwsyDqzfQ21dc1bGBtuvLazSoxiUiXNL4EpZk9RnlvSra4xosFEu6EABRViAzONdTiWGeJzfPMYxLBLgp5mdGjZvzRAFewAs/kJ2m27C6adGJcQJ++krYBJZaA/3tbbdQMdCwDC2Sl+h70iKK9rQHCwF+wpDHYMKQF8O5yc1zDMNoDCWIIAyt8xicpA200fu10t1upG3UG40Rxrl4bmjjBPz1ZaMYXysDDdMUGJV2BpRE9Rn1Pdg1fjYvKnHc2HHzHMMoIoHCUERfxWCyvjpJM6NOWne9cd503hGhjRMAFFmEIke7FJxyxqdx3leuB5B8BepChJviJawTc3YhYvxMtkasAoAgyRBltkYIAxlYVYWTMB2GwxuuCMMN9hGHGXEb96AhW1Vhq+FHJaTdfBtVdxTu2rSTinECgGG6MMzopn/saWcENtBO+uLq+wcVwYUitNadZmhCKxTBhUSym4XcDNcqw44Y0ZdWQAIAmCb9Y83Nc4wi7DUDBdlDIeU5nlGaI9VyOXLUXdwG2ur1O9EdhjvWbKRmnABQ0GUU9M6qiTAGSgvLkwPF3MVhoJ2+puXJ1YWugxCmvzPMDUrY5nVZ06FlbKpKEHSd/iAnbp6UyGJEX5rxfFGZtE++45i7uAy03es2091JslB9lX/Hmo1Y+ss11IwTaB3PF4SZ3TkAow30vu/9eygDDTsgplE8XzNoGiiN15o+U4dM2AoBAYBJkguzVExbRmgyG8/HySZ7cjzfXnsJ2LSJXuUTxJCj6g5ancdhnED7eL4wHHvaGQCAm6/8HB771a0AgCUXXkEtiag2JD5syEDhbeNRfPWtyO9N04CdEFVnltDyhbQljCBIQALAQxI4IYmz8gzT7xm26TY/ZzyVgHVaFWjQ14krGB4YaZznvHdfasYJNK88G12YgvRb1Vagj/3q1tAVaFDCVJ4VohogTeOcsm8vZGIFrjzjarKNglkq8spzCF55jmHCVp7K/hNhv7wjJjXB0W0TJUoxdxXji1qFhjHgRpUnjTD4euP87inzGhpnJZYxLDQrzwrHnnYGdg6U8atvfDGWChSIHq5eMcIgVWhcA46yUHlGmU6UtcozKDwYfk9k+nRgy5ZITzUmTgPZuo25YPiyrKIwW4Xz0jZqrxnWRKNUrdXFsCkGwwc1zk6oLIZdaBEMH4XDP3Q6AIwy0H1ndGP95oGGz5m+Ty+2bNjV8nUrTbeK6OuOGq6exkjcyojhykhbV2Arrccq+zeIasgWljRH2gKAYdAfbcvNcwyjyQDJSDxf7+xe7Fq3K9C+qju04kQMOuIcjavYI7+gQarOVk3ad/69D+c9+kKsxgkAmkZ/DhwwVNk0MVAauCQe3UngCcG0ZyFVqMLM7hzKRfZiMwFAU/loW04IHA9wvPjMIq75nq4owRWlRNe/pIErSXApTcamZpwB5go7jgfHie8m6/APnY6PXvpVAPT6QKfs2wsRHkRk4+YwCLXzVAXiQSB0tcfd3wkAnuvCy3CASTMcj75mbp4Uydp0FWFoC0Ocy5MFHzhEhja2qD3enRj/nX/vw3mPNDdO2p+RIPhbnNQb6OM/+2bHBkqGQu5YYHQAfPtvZ5xVZxLxiXETdKQtEP46GARunmMYSQQkhuL5KkgegTQUVM5S9Sm6HkS3s2qiapwAlsbYVFuLJIqQ2qz5SYPDP3Q6Tv3cVwAAz97/C/zxZ99qaKBBTWPi3j3MmGc9tI0/iaoTAERJghhD1F3ctFvTNtJrUn9FDn0ixvSZDmBNmkZZzEjiaLq1JRm2NNwdz4qBOooMR5ED662vxGuN89PvnIEbYzLO+hYS03JhWsk0xR1x0serBvrM/T9vaqBBEOFCahPPlwUaLTsmDiXzNiNLfZ3AcBCGY1lwQg6IS3uwEABYMSwVyM1zDJNX/S0saTfdao4FzRn5BWXBQBXThGKakZ77yzrj/NY/vj32irNCXpeR7zCeLwxBDDSIebiCgt694ztXadBsvU5XUFIbadtJk62a06Hm4pnLHCd6jg8Y4oRgsOxvcUO7+jQUDYaiUX3NJDB1Hfk54ac//PLvffhMnXHm9k9uGkWn8XzAcGVST7ML9REnfRz/dM4XAESvQCtBA3EtKN0prXS1CkkIW3Um1WQL8JCEWrh5UiZLg4a6cv4WdfJ8XLSrPnXbhG6PruCyXn3OmCQ01N2IyjFoZJxi3KN36ugqKLEEJbTj4A98ZISBhh1E5AhqJsIGGtHO0LOsvZ7aGyMtX8hEUEKYwUIAj+fbs4nQ79lJ5Rln0y3Q2kBbVZ5ZNtCwFXMU42z2uXRyg0Sj8ozCvjO6Rxjos/f/YoSBtqvAaqu3LFWfQbQ0qzzjrjo7HWUbtvLMQn8nwCtPTkgqlWcS0Gy6bVZ5VsiigU7aJ99Wd4Xe2b0tjTPu9VLrSavyrNDKQFtRX71lwUCDamCp8qwlK5VnWHjlyQlF0fQ3IHtNt0Dz6jNIBZclA61oCVp5ZqGptpZiyUaxlO7CzAd/4CM4ZtkXAYw00FaVmEQsSHXVW5oGGua9G2nPYtVZ35dtGiWYRin066RNqcQrTybISr+nrvpbVMI23dKqmHKOhZzT/mTPgoHWagii+0G7nCnjBABdl6GHGG0btimu1UW71gAOWvThhgbajGYjVtMw0LDvWa89a1NTmqHmclBzCTVnUUTP8cpzzyZkv6fl+FuWaVR92qIEWww2EXvSPvnUTLT+fdvpvmfzzswZJwBYlgfLykbMXSMDnTarcWK9SFyIpLGRJ2WgU/btjfRerbQHIckRtrU4tg3HDtZKEVd/Z9jBQgBgOTyejxMCP2Fo+N9Rmm6TqD7rDVQkBGLIaQtJG2ij92ul+57NO/HZv25oa5ytjl9cg7gkSYAkdW7izaarhCVoBdoupSeqsQWlk9eu1Z5E1UmjyRbwk3riSOuJGymGOdN8VZUxTFo1jbpfL6xXdoV6Tu2qK0LEXNuKob25Ib4+mVYm3Ux3UOOkTsCWirSL30ZLlB206MMAgPf9x1fh3v8L3A9g/yOX1q0H2lr4KQ//FKLn4dfHngUA2LZ+FxW9dAw5unGmVXUCSP9kiYgQw9WQvVsIRoit3zNE063t+lunxD1tpR5HlOAEbLZtRBxNuUFes5HuMMYZtc+408Fgtu3BtuNtto1S+Ry06MPYZ8FR+AqAE+//Bdb+7vsjKlABLoQmEXenPPxTfPQPt8GrqZI6qUQrz6VVyQpwMXWvZEat0gyB9xwHntO+LyhLTbYAYMewEgyvPMcwjRKphL1mgGzaHPt7d1J9qg6dkZ80KtEwJlyvO7WKMyS5XHaDvp/7/A247bqL8ZU1jwF//DV+BWDeP/8LBEGAJzS+fFWM81fHno17Fp0x6vf1BtioIo27z3TyzImR2leSqjqbNcHLGnvJXwCQU+lbHTfPMUxlmkqBwvmu7D8R9ss7On+hNvTO7sVbff5doh5gxG0QGhlgM0PtpGItD01T0R2LunHGWf0XhxY4Htd4XE4iNGq6reAb6EX4yprHhwxUwLx/Ph8y8W9W3Jr5ku2MsxFJj86dvk8vhLL/txI5+JczinHSXnrMKvnfG01Pf6R7GIp7+lSVnTt34hOf+AS6u7vR29uLpUuXYnBwsOVzjj76aAiCMGI777zzElIcEwGbbpuFJCQ15zNqM+S06VrgmLuoVJph67dOqIQkRDHOpIMRaqEZkkBr0FA9z33+O7htwZH4CoCP/vFurP3dD2BDGRE0EMU4k6bSx0lkLZRxJkmrzzBISEJWUoVq2eNDEj7xiU/g+eefx0MPPYTf/e53ePzxx3Huuee2fd6yZcuwZcuW6nbdddcloDb9+Z60g+GjVD9RTKEoqZBnTwr9vLQxFA139+2qGucn9p6Y2abaWpKK52tXBbWrrOoN9H9/9wNInn+TxZJxAoDgmBCc4DeIWag6gXSD4aP2dwLxxPMx02z7wgsv4MEHH8T//M//4N3vfjcA4MYbb8QJJ5yA66+/HjNmNDeqfD6PadPiXdcycaZPB7ZsablLUtF8tCm4/omu14zAZYE/rNuEL/7vq1XjvOnEgwIZZ7sbjFY3LTRaEaJUnTO6XGweTL6v9LnPf2e4CfeJ+3A3RFyj9+CjD7FjnED8zbVRaddywGLVCcRTeTJjnqtXr0Zvb2/VOAFg0aJFEEURTz31FE4++eSmz/3FL36Bn//855g2bRo++MEP4sorr0Q+37iJzjRNmDVrMg4M+H0TJcNB2TTQVVAwWLJR0GWYlledH+e6BJoqomg46MorGCza6Coo2L3TQVdehFH2oCgCPA8ghECRBRgmQUEXMVjy0JUffiyVPWiqAMfxR4ZLImDaBPlc3b6W36+pq4DtAKLoD4C3Xf9nG3cMpQwpvpEOmkBB9RfJlifMgNe3FS4BNJGg5IgoKB4GbRFdNY+GI0KVPLhEACGAsu9k7H5tAHnBQdFTUBDt6qNBZGhw4UAEQCCBwIIE/W0TsWuDgYJroSipKLgWSqKKHLFhCxJE4s96cwQJmudgk9oN3bORIw4Kc2T0bTGRs01YsgLZc0EgwBMEKK6DsuI38Rp1j6asQHFdeIIAIgiQPBeWpCDnWKP2LcsqVNeGK0oQhuZq2pIEzbFH7WsoGnK2CVuSh3WLEv57/Rb825BxfmTf6bj+uHdhp6wh79owRRkyqdFNXJQFBXnPPx69RBpxDFW4cCEAECDDg1uWkZdHfzZFR0S+DNie/7lLoh+Koat+i0PXeK96vhQND/mcCNP2IEsWBAFwHAJNE/H6G0XougTBHEChS0Nx0EShS0O5bEORX8QuawY8j0BWZJhlE7quo1QswkI3zFIRWr4Aq2xAVlV4rgtr0IQgSXAtC7KWg1MuQc7l4ZRL8CwPxDYhyCqI5/hTCATR/39ZxcxuF2/sdCA4JoisQXBNEEmD4Nkggm/Wf7v4a7jt25fjK888gS8+cQ80AHd/4Azc/08fhkRsiMQGgYTKbEpPkCARG66gQiYWnJpHidjwBP9zBwAiCBCJC1dQGuxrwRUUiEOfpT8BwoXXZt/Je/cCtgGBuCCiAsE1ITgWBNeCm59Y87faIOKQbkJARAmCa8OzVBDLgKDqw4+2CUFWQDzX1yGKII4NQdFALAMz956M8q4d/nE3DUhqDp5jQxBFf7CV40BStRGfjZzLY7czCFXPw7FMiEML0nuuC1lRYZUN2GUDVtnAhOl7D3/2ZhmyosDzPAw4DmRZhmkOnyf5QqH6WDYMqJoGx3EgCAJESYRt2cjlcqP2NUolaHoOjmVDlETIqgHbcZHTFBSL5ohztThoolDQUDZtKLIEQghcj0BVZRglEzt3tO7eiwIzzbZ9fX2YMmXKiJ/JsowJEyagr6+v6fM+/vGP4+c//zkeffRRXH755fjZz36GT37yk033X7FiBXp6eqrbzJkzO9ItdE/u6PmdoEdcDDsOlJnB755114HuDjcjjtubfvMTTX77+raqcZ667zR8/cT5gZtqwxyXUEwOft7puoR8Ppn76L2ndFF5nb9ecj0sUYIGwARwpTEYej3QJJiyV+Nzl8gaiNT+y7lXhOM1fVK0KTB7jWvfVKXoOpQUFsPuUTZ19Hw9T79/WSApn3GXXXYZrr322pb7vPDCC7jnnnvwk5/8BC+99NKI302ZMgXXXHMNzj///EDv98gjj+CYY47BK6+8gre97W2jft+o8pw5cyb6++5Ed3e0ASXkrRinhrRouq3cbE1s8f2LOm0l6sjbINNX3pL8L+d41xj1u6w149YODjp132m47oT5mOgF72jupMkWaNFs22JQWX1f/I6dvt781AMa7v+WtU/Dn7dqtn19oPkx2Ni3u+nvKjQbeVvhA//5Q5zwqx/AEiWonosrAfzqH0/FvH8+vy5IIT1aBSCIlv/l9NTmX86ozbVR+zqDDPYq7noLAFDoHb1Ye5xNtp30dwLAhg1b8Y79FqO/vx/d3XRuWFNvtr3kkktw1llntdxnzpw5mDZtGrZt2zbi547jYOfOnaH6Mw877DAAaGqemqZBY3QuUz1KdqfvtURukfnZm6F+0P/cvBPLh4zz43tPxLXHHwwRwcMG0hhh22gQm6Iw0wAFYNg4//vDy/DQyWfjoG9fNjSN5e6heaDpGmiQ1KBKE3QzsmicACDKqVtGJBSJ/sUw9SMxefJkTA7QxLRw4ULs2rULa9aswYIFCwD4VaTneVVDDMLatWsBANMjLC4dFWH8jPiqzxYDh4I0KUQNTYg67zNIeEKrvFIgGwZaa5yVwUGDghgxWDAatKYcJd32NGvauLbVZ7N5nxXjfOCj5+PhD30SABk5iOiPd+NXINUghSQJF7XX/KCnGr/XjiYnS5arTgAgMXwzmbnlfMc73oHjjjsOy5Ytw1/+8hf86U9/woUXXojTTjutOtJ206ZNmDt3Lv7yl78AAF599VV85StfwZo1a7B+/Xr813/9F8444wwceeSROPjgg9P8cxLB9fwtLqJO3G9XcXmCP7CmFb2ze5uuBxo3tcb56XfOqI6qDaK7QpCqM6lYRNclcN3s9RfWm0itcT704XMhEFId6DNyGsuvR0X5xU3YjNpa7bV0YpxxV50A4HkePC8bK/CEwfX2YPME/FGzc+fOxTHHHIMTTjgB73vf+/DDH/6w+nvbtvHSSy+hNJSCoaoqHn74YRx77LGYO3cuLrnkEnz4wx/Gb3/727T+hETRZH9rRxoLZbcyD5W4UAMu15S0idYbZ+08zjC6s4SmitDU8JeCVtVGuwty2At9vXECABFlEHH4BK830Jcf/3HsBjp9n95I4e712jsljjmdjZAVFbIycqBTVqen1KLG0IeV+oChrDMwMICenp6OBgxVSHrg0PahlrHJAb9XSQ8eAhoPINoh+cd5ohs+kzbO5txWxgkE1x20r7Oj+Z1NuiUa9Xluf9MfmNU1fW7D5zQbMAREHzQEBBs4BAD733j9KOMEANH0m3U9bWS1dvB1F+HsNY/jSgD3n/gJHPmpS9C3sT/QewWBxhJijbRnveoEgN07/e/6uAnD52bWm2wBYN1rW/CuA44fWwOGOPFBI9M2CJ3k3jbqA8170dNAKlUobRO9p41xAsF00zDOtoTszy/k6UTzxcF7br8RCxsYJwAQqfEJPqIPdGg5syM/dUm1D3TLhl2hddBec7NWe6d9nElVnQB7mbYV8jHM2ePmOVZoMHCoEs0X9LzpZMUVmgZaHJr/pgdY+qgZ9U25Ucy08hq//HtfoKzadrrTzK9tRSWaL+lg+CADhwTPw+qlF+OhY88c/buheLtGaT2+gV4Mac1jePb+XwAYNtAkFp9uR0X7PrM6mwfeiXFGySGuRPOpuj+djIWqE9jD4/nGArGOum0AS/F8tQZaieejSdR+0V/+vQ+feeSFQCHvtHQnvX4qrVD4emZ259o23bbjqU9fBADYF6PnfraLuHvu8zfguYd+Dfzoa6MMNG2IrGFmhxVj0sYJtI/nyyp7fDA8pw11zXVRguE7GTzU6UW/UpkVJbVaxaVJGOMEWuumWXXSHuCVVDB8I8IYQH3zZpBw9YM/8BH80zlfAAA8e/8v8PjPvpmJJKK9J8gg1ugQkKAk2VRbS20wPAsDhSrEUXly80yYJFdaabYkWTvSNtCCa8VSfYYhrHECaKo7jHEmXXUC7Zcka9V8lvQFtNZAgy7rlTUD3XdGNwRVh6AmH3MHdLZsXJAlyWhAs8kW4JUnJwg11adh+VvSdGoA7uwJcGdPoKQmPFGMEwDKooKyONKEEu/njBD+YZQdGOXo/cutCHKhDltFVQxUcG0IbrCKOQsGuu+M7qp24lggERd7T6vqBADLLMMyy0xVnQBQjuH85uaZAklVn6rsb1HotGmwEwNV4EGBl8oAm6jGCQAKcaHUzPMMqz/IMYtjTq6qSLHMgwtDFAMlojS0CkkwDv7AR3DMsi8CSN5ARzU5SzIEKfyXs1Pj7HSxcllRsFdvvLZBu+oEACWG85ub51hkqProNGEoLQP1IMAbiuhT9+tNzEQ7MU5gtO6s0eymzfVILAksFTq9YDd93SkFzJwSrgnxoEUfTtRAa6vNEXiev4UgbeMEhhKG4owtiwkvhs+Ym+cYhiBYvm3W8FdhHGlacZtRp8YJ+GtByvv2RNKaRl9nBUJIRwZCqwkvrDmQof/CzpNMykBb6apoD0oWjBMApuhOrDcbcVSdAGLRzM0zJWJvup0+HYoIdLpgRhrVpwwPcoPVSeKqQu+kYJwAoO/T1VB3O4Ieo7hiFBVZhCKzdykQRBnCUMRd0wqvCXEaaBAttdrbkWYfZz2yLENmcGUVOYZVVdj7xnACUx4/GTT6yZM2UBMSTDQ/2Wma6J1/78N5HRpnRU873bETcaWgsumibMY7ACRo5RPGKBoNuknTQMMYeNABQzSMk1bVOaPLhWWasMzW04OyiGnSn4rF3i3EGCLu0IR8TgTSny4JYNhAg6QQ6UIwx68YaJAFthvRqXHWG3hQ3bWkXXUCQF7P1mUgSPIQAAhK42kqtQbWblHtgxZ9GACw8j++GilIIWq0XjPttWTJOCvk9Pim18TVZAsAuk4/CIRXnmOYwZKHwXGdxX9VoHXxDmIWRU9B0Qt+skepRDsxzmbvF1Z3mv2ctdAISQjS7xnmQh7EOIhltA0aCFINhq1AK6/ZSSZtO+1ZM87K51sqFlEqFqm9blLweL4xSJzVZ1d+6N6IUitLJ9m3tbTLwS2I0S7k9YbWrCKNapztDDqM7qwYJxAsnm+8uqHl6ippECZkoJHR1ValzSrQ2XvFE/jbTDut/s04jBMA8oV4AhLirDqBeEISuHmOYQZL/uCVfIPQ+KgkYaCV6i0vddYP18hMgxpnlD5VWrrrCVT1R+zvBJINhg+Td9uu+bZauanRjKLeUPc942xM6NFw9/VX4tn7f4HugoZ9L7wilizcRtqzNDCoGZWqM5dPJx0pKrzyHKPEVX1WK0+g4aorUYnbQKNWnu24u38A5z3qG+fS9+6LG0+ZB1Gkd2EMqjtLVScQXzA8DVoZaBzxdkec9HEAwN3XX4nHfnUrAGBJDAZar52mccZVdQLxVJ5xV50Aj+fjhKRU9lAqxzOhOc4+UIPIMAjd+7pfrNmIc365BoTEY5xAMN1hjZPWcW41NapkOCgZnQ/LDjrfM+zFvZmxENsEsemP/DzipI/j1M99BQDw2K9uxX3f+3fq8wRrtbNinABQNgyUjeiB9mlhGPRvyLl5ZoQ45n3mVAE5tcYgOmjaawRNA601FQ0uNNBr+kzCOIH2umOrODv8XHOahJyWbjxfOxoZjCCrEOR4hpPXG+hvblpB1UAFWcXeMyZk1jiboWoaVK39SOGgJFF1AoCm8dG2nBDYjr+NgLKB0qRiLg5EOJROzVrjPCdG4wRa645inHFOT6nFdjzYTrKRa1Eu9LOmjRthNsRzQLx4Au2BkQa66q4fUzXQGRNzIC497bSNs1krguM4cDpYpL6WpIwTAByX/jxmbp4Zgnb1KQj+NgqKBkr7Aq/sPxHK7F4IFIIF76gzzu/GaJwAhkIFR+qur6oDv1ZCxgkAgiBQ69NLYrWNioEKQ//FCW0DHb4BEIa2zknKOAG650qSxKGZm+cYRhL9LW5oX+glgUCb09tRM+cdazZiaU1TbdzGCQAiCMQa80xkYBCFGyFJFCDFfGwa0clFf9a0cYAo+lvM0DDQ+qpZEEUIFLQnaZwAIEoiRAoXlSSrTgCR4jbbvib1V+R0BM3q07IJLLvJlzyj/Z8AYLkiLNc/NaMYUK1xxt1UW4sNETai666QZNUJAJbtwrLbV4xxXPA6ufhPH69h+nh6/W+tiGqg9aZZwXNseE5ng1iS6OOsx7Zs2FY8o+HjxA5wfoeFT1XJILSmrui5NvdGFKevAPSmsOjyyP63MNF+9caZRMVZISe4UOZMgCJna8mmdjdkeo7uZWBGl4vNg/EPQJJU3zhndfvTPoJE+nVC7TSWVXf9GABw0gWXN2wSbDcQqKI9KnEYZ5Am91yu8/dNuuoEgBzlcxzg5jmmqYYktDLRGAwUQEcmOmj7evMhTTRN41T2nwjTkGHao3WHIVTVSan1IMmQhEaECU6oxSmXAAByzjfPimHFaaL1BkoIGTEPNOjo2XrtYUjLOAEeklALN8+MQqP6HBGSkDCdVKFdSmvzqW0SrRhpWsZZq6Wd7nYk3VxbIQshCVEMVM7lG/48bhOtD1LoLig46/IvhxqU0kx7K+Jqpg0zyKvTkIQ0qk6AhyRwQjJY8qrVZ0timr4S1QwGbbFafbZD2X8i7tq0M3HjbDSKNozuetIyToBOMHw9UUbdhjUHp1yqVnCNqPQ30o69mzVtHE7/zGfwmS9/AwDw29tuwe0rrgo1iKid9nqyYJxAZ8HwaRknwCvPPY5Oq89QlSfl5tsKUSrQMBXcz1e9jLNueAyEAOcunoubzjsCoigE6h8NS7tBQJ1WnqGgeMMTpvLMUkB8mOqtkYG2q0zbme7i08+EIAi4+crP4be33QIAgSvQMNqzYpxAfMHwccOD4fdAOjHQohGgz7OWjBhosUmfZz3NjBNobnRBTDXqSNmguutJs+oEgGLJrzq7KPd5Rhk4FKb51jH9mLgo/YYAnVi8Y087AwBCG2hQ7WmMqG2FUfKr5bB9nmlWnQBQKvHKkxOCwKZZS4wGCgQbSBTEfFoZZyvinHsZZaBQJOMMUXUGmfqUtcWwgxqorGXDWKIYaDvtcZtm1DCLKIthp22cAKDrvM9zjyTq3E/T9mDaEZoSY4zwC2IWpifA9JpfeKIaZ9y0011P2hVnBdPyYFrxNDlHvUgHMQ/XtuHa2ZhzeOxpZ+C8r1wPIFgfaCvtWTVOALAtC7ZFv4qLmyDzmMPCzZMRohhoR8kxMRtoK+OQBH9rRFaNE2itu57IxhnD5yJJAqSgwhOknYnQSumhRRgDbaR9Zncu08YJhE8YykLVCSCWBK3snHkc6nScnhlziHwzA2mmO8vGCQQ/3lmpOCs0zUBuQtgLYicX7JZmElZ4AgQ20DrtSfRtUskdDnHMs2KcAGLJQM5WZwenJWEHD9kuhRUgYuoDrdCoL9Ru0PSZdeMEGuuupyPjjOlmxh5q2k9/tmdjKsZS3w9KKK3uQZsgfaAV7UkNCKIV2O9m9Ji3w+arqnDCNN/mVBE5lcJHnMAyZrWmkpM85KThPjgWjBMYrbuWdk3VcRD0XMnlJORy8cbp0bh41xuNpGodx9zFRbsKdObEbsyc2J2IFpor3QRdzzNLVScA5FT6dSI3zzFM0fCq01U6JiEDFfaagaIjouj4pyYrxglghO5aqJhmjMe/WHRQLLJRUdT2C4YNGkiaRga69zgNM7tzsEolWKX4tdNeIs4olmAUW+vOmnECQDGGqSrMmOfXvvY1HH744cjn8+jt7Q30HEIIrrrqKkyfPh26rmPRokV4+eWX4xWaAEEriq68SDeiL6GFtMfNmoJxs6bgZ4+yY5yAH5JQG5SQRrUZha6CEjqiL8oFkuaFfGZ3DnIuHynmLknqDfSGq68AIQRavgAtH2/gQBxrq+YLhZZBCVk0TmAPj+ezLAunnnoqzj///MDPue666/Dd734XN998M5566ikUCgUsXrwY5XL4EOqsEcRAA8fzhSEBAx0sA7f913M4+zvsGCcwMp6PqmnGfMzjiOdrBs0L+iTJxSQp/sW3O2Fmdw5Lzz0Xl3/jBgDAHbfchBuuvgLl4iDMUrSYu3bM6HJjW5S8k3i+NNmj4/muueYaAMDtt98eaH9CCG644QZ88YtfxEknnQQA+OlPf4qpU6fivvvuw2mnnRaX1MRoN4AotmD4mAcR/fbR5/D/rr0PhADLTj4U37/8xKpx0ljyLC66FA/C9GkQaN7kRjTOMH3jWQiGj0KlcpupNx5QlBaNBgGdcsanAQArLr0Yd9xyEzzXxYVf+BL1947LNCuwWHUCPJ4vFOvWrUNfXx8WLVpU/VlPTw8OO+wwrF69uql5mqYJ0zSr/x4YGAAAlAwHZdNAV0HBYMlGQZdhWl51fpzrEmiqiKLhoCuvYLBo+/sOPRplB4oiwvN8Y1dkEYbpoqDLo/YtGQ40TYLjeBAEQBJFmJaLfIN9i94E5MrbYTsEoihAEADbIdA1ERu3WNBzInTNb74dLHko6CJMy4MsCSAAXI9AU0SUyv7vBktedd+uvAij7EFVBLgeQAigyIBhEhTGT8Xghq3oyvmVYlcOKFmAJgOO50/ZkETAdIC8OrxP5bFoAroKWI6/nwDAdoH1b2zHuV/1jfOTJx6Kb15yIt4cFFDQgLINKBNmgABwtmyFJhKUHBEFxcOgLaKr5tFwRKiSB5cIvm6RoOyKyMuj9y05InKSB9vzj58kEFiuCL3BvkXbfw3TEyAJQ7o9AfreU/D6TkDfDejK8N9a1S1h6HgDqgwYlv+7+uNSOYau5+8vl1yYFkE+N/qzKRoedE2A7WDoPPEXQNdzIorbjZHnSclGvuacFQTAcQg0TcTrbxSh6xIEcwCFLg3FQROFLg3lsg1FlkAIgecRKIqEctmGnldRHDThqAZKxSLyhQLK5TIUVYHneiCEQJZlWKaJnK5X96k86qaBt9y8vxi0IEIUBDiOA1XLwSwVoeULw49GEWouD8c2IUr+5cpzHciKhrf6NkPN5aCUctDyBfTa/nNss4ytZReEEBDPgygrcK0yZE2HUy5BzuWHH60yJEUFGRqNKUgSXNuCrOZG72sakNQcPMf252kKAjzHgaRqmCS5Vd2WQRrqXnzSybAtC9d/4fP45Y9uxl5774VTzjq3+rdaZhmyLMMjBCC+btssQ8vlRx0Xq2xAVlV4Q7pFScIEpYxyKTfqeBuGAS2nwbGdoWuECMexoWmj9y2VStDzOizTgiT7J63nulBUFWXDGNrKmL73XiM++0mFreg3yNBnL8GsOU9qzymjZEHTFDiuCwH+vFHLcqDro/ctFU3ougrLdiGJAgRBgO24yGkKisWR+xYHTRQKGsrm8DnregSqKsMomdi5Y5CSswzDTLNtWPr6+gAAU6dOHfHzqVOnVn/XiBUrVqCnp6e6zZw5M1adcaLnxGgRfUGZPJn6SxZ0FTnVr4Te2LoLpt14IIswdapf5U2dAmH6NOo6giBMm+pvU6cA8G8G8jRvcCdPofhizdF1Cfl8+PvoHvX1yO85Ld95haTkclCaxMXN6NL8bVw8o3Errz+9S8Ne44JNNyGE4I11r1X/PX7y1BZ7h2NqIZnm61w+j5w+8u/tUbLbGlRBz9M/DwQSZh0dylx22WW49tprW+7zwgsvYO7cudV/33777bj44ouxa9euls978sknccQRR2Dz5s2YXtP09dGPfhSCIOCuu+5q+LxGlefMmTPR33cnuruzOzihUfPtjn7feCb2JNDAQLEZ97d/2oDT/+0OlMo2jn3vHNx7/ceg54I3LcbZtNuqL7Nyczuxi8IbddDPGTaNasdOv7kzP/WA0O/V6QorYYPjaynuegsAUOgdH+n5QZp5ac3DJITgO9d8Eb/4wY0AgM9+6Ws46fRPRtZeS9xNtbX0v+Uf857xvu4sN9XWsmHDVrxjv8Xo7+9HdzedKUKpNttecsklOOuss1ruM2fOnEivPW2aX41s3bp1hHlu3boV8+bNa/o8TdOgBZjHlDUa9X8qSUauUewHPerQfXD3Nz6OUy+9A3/482s4+XN3hTLQVgYX1FijDPhR4p0qGRuKwmYDlCh3dvlKKqCg3jgvu+7bOOHDH+34dZM0zQpSh8c8LRSJ/pcz1SMxefJkTI6h6Q8AZs+ejWnTpmHlypVVsxwYGMBTTz0VasQuS9QbaOJNCpQMlAA4fN4+eOC7H8cJ/y+agTYjzqkj1I53QlOCKnTS9tTp+p5Rli2rkl6jWWAaGeeHz1wKY/dAR6+bhnECGHHMWak6AYDEcDVk5pZz48aNWLt2LTZu3AjXdbF27VqsXbsWg4PDHcFz587FvffeCwAQBAEXX3wxvvrVr+K//uu/8Ne//hVnnHEGZsyYgSVLlqT0V8RPbZOd6/md5okyfXrHF3/X87cjD/UNNJ9TqgZqlLOxikYjKro7osNjF2UBAdclcGlEOUYkqhF4ngfPS3AB8pA0M04guvY4p6EEwXM9eK7HlHECiOU6yIx5XnXVVZg/fz6uvvpqDA4OYv78+Zg/fz6efvrp6j4vvfQS+vv7q//+/Oc/j3/913/Fueeei3/4h3/A4OAgHnzwQeRy2VgHMC4qF1BVFqDKKc2N7MAEVNnfgGEDLejZN9Ba3ZFIuOKsoKoiVBoxjh0QxRBkRYGsZHOaTSvjBKJpT9M0K8iqgkmFrWnLCI0q02+2TXXAEAsMDAygp6cn8wOG6iFvbcb2t/wBQ5PHp9g6H6EZd/tu/3HyuOGfPf7MBpx40R0oGtEGESVBI92BoWScUSrP7W8aAICu6XPb7NmcTgcOVQjThLt75w4AwLgJ8S1wHoV2xgmE054F06zg9v8VADBpcjK5vLRY99oWvOuA46kOGGKm8uSEQxg/AwVdREFP+SOO0Ixb0PytliMP3Qf3fyfbFWgj3YFI0TgBoJBXUMhn40YkjFFoeh6anq0b2iDGCQTXniXjHK9uQL6gIR/pJE+XPNU5ZD7cPMcwRXki/Xi+qIQw0cGyv9WTdQNtprslKTXV1pJkPF8QghqGWSrGFnEXhaDGCbTXnnbfZj2VPs7ioInioNlm7+wRRzwfN88xTFdBwbjpGQsmD2AWXTl/a0SWDbSV7oZkwDiBaMHw9dAeQBLEPJIIVw9KGOMEmmvPmmkCIz/bQpeGQhd7leceHQzPCU+loojanBcbbarQdhVcVg00cOVJYURyPZ18xlmrPGtpZSRZqTzDGicwWnsWTRMYfVPEK89huHmOYWoriswZKNDURIJUcFk00ECVZ0aqzVpoVJ5AfPP+mhlLFirPKMYJDGvPqmkCjT9PXnkOw81zDFMyHJSM4WzYTBooMMpES5a/tSNrBtpSdwzVZoVOP9f68ySr1JuMVTZglY2U1Ayt3PSlL4Q2TgDolYroldKvmpvR7EbIMCwYBv0qLm7iuC5w8xzDaKoETR059D+zBgpUDUaT/ZVFgpAlA22qO4PVZi2NzpOoxD15vrZSk1UVskq/oghCxTjvuPl7AIIbZ0W/oipQ1GyMcK6n1WeoqjLUjiYzp4Oq0NfMzXMM43oe3AYpJpk2UADupClwJ00JbDpZMdBRCUMxVpsVaHyWzc6TLDOjy8XknF1dkitJwhpnxTBrK+dKUk/WaHfzk1Xd7YgjiYqb5xiGkObxn1k20BG6AxpQFgyUDG1JmCZNWp0nUUgquo0Qgin50cYU93sGMc5Ghln/OlnLpwnyuVXPccaIQzM3zzGMLIuQ5eYfsTB+RiZNVJb9bQQVQ2phSqka6PTpkKdPgTw9mTU4AXo3QO3Ok6wiyzLkmhMlbhOtN87Lv3HDCONsZ5i11GtPm6A3PLIkQY5hhZK4kUX6mtn7xnACY5ouTLP9FzlrBmpaBKbV4l6x1kjrzDRRA63T0FZ3Rgl6noQhierTMk1Y5uhpE7UmRstM643z69/9Fi78lzMjv08z7UkzXt0Q6rMyTRummc1pTa0wLfqas3Prw6FOXg/+8TZaDzQt8rmQ93T1BnridNwP4MSL6C5n1q4pNrTuDqB5wxPmPMkSOV0PtF8QY6vN1K3fnxCCL19+Je64+SYAvnF+aunZIZSOJqj2OIlyg6PHEHOXBLpOf3AWm98aTiAqE9/z+WAfc1YMtBIp2IkZHXnie3H/xIk48VM3+Qb6hftw74/Pg67XfPlrQ+sp9FHS0J0GlfNkXA/d1+10rc92lIr+VI9cvnMjatU3+eXLr8QPb/SNc8V3vtmxcQJ0tUchastAJSAhn2drricPSeCEIsrk9yw04XblRXTlOz81j3zv/rj/ZxegkNfwh8dewMlLbx45Ry1AP2oYaOluB+3PiFZIQiPibL7NFwrIF+ILSWhknGec82kqrx239lZ08pnwkIRhuHmOYaLGrqU9kGiw5FELtK8YaF5XGxsoRWjqbkYcn0uW4/laUSoWqxUcbQgh+MoVV8VinEC82psRtn+zETyebxhunmOYTiuKtAyUdgV35Hv3xwM/vzB2A02q8qRNnJUnEF/1GVf1VjHOW77rDw6ibZxA8pUnrc+AV57DsPdN5wSmaDgodhi7loaBFg0PRYNuBZeEgcahu5a4Pgsa50k74jBQwzBgGHTj+ZIwTiAe7c2geeyNkgUjSHZmxjAMHs/HCYGuSdC1zuc3Jd2Mq2sCdE2g/rpxG2hcuoF4b2JonSftoG2gmqZB0+hVQUkZJ0BfeyNoNNPWo+UUaJ2OWk8BTaOvmZvnGMZ2PNgOvUooKQO1HX+Lg4qBNh1E1AFx6Y77uNM+T5LCcRw4Dp0DnqRxAnS1NyKupnLHceE42VwFphVODDGO3DzHMIIgQBDoVkJJVKGC4G9x0XYUbkTi1h0XcZwnzaB5UaelO2njBOI75nFUm7Ukea7QJA7N3DzHMJIoQBLZa0aURH+LkzgMNA7dSVT7cZ4njaB1cRclEWKHBzwN4wToaK8niVQnURQgJniu0ELk5skJg2W7sOz4mljiqkItm8Cy44+5o22gtHUn1Uwe93nSCBoXetuyYXcQu5aWcQKda68l7mqzFttyYVvsNdvaMZzf3DzHMHpOhp6LP0SK9kVez4nQE0rpoWmgNHUnOkArofOknk4v+LlcDrlcLtJz0zROoDPtFZI0zQo5XUEuhqi7uMnFcH5z8xzDJDn5nWYVmkTYQC20DJSW7qSnB6UZktDJxT9q0EDaxgl0HpKQtGlW4CEJw3DzHMPEPfm9ETRMNI2wARoGSkN3GvNq0zhPaolqBFGCBrJgnED0kIQ0qs1aeEjCMNw8xzBpVhSdmGjSlWeFTg20U91pJTplIZ4viimErd6yYpxAeO1pm2YFXnkOw81zDJN2RQFEM9E0Y+46ycKNqjvtLOEsnCcVwhhEmOqtEvKeBeMEgmvPimlW4JXnMNw8xzDFko1iKRuB32EMIu6Yu3ZETSKKojsLq9hk6TwBghuGUSrBKJXa7hfn6ihRaac9a6ZZoVQ0USqyV3mWYogU5OY5hsnrcuYWOg5iovmcmPqamPVJRKeccwvK5dYGE0Z32tVmLVk8T4D2VWhO19suKp1F4wQaa68YZhZNs4Ke16AztpYngJHr+FKCm+cYxrQ8mFY2Y9damYdpezDt9HXX9oH+ftX/4eSlN7c00KC6s2KaFbJ8nrQyE9uyYFvNK4qsGicwUnvWDbMWy3JgWfEuIhAHccxj5uY5hpEkAZKU7TSQionWGkrSiTetCGOg7XRnqdqshYXzpJHBiJIEUWocaJ9l4wSA8foWf2PENCuwcK40Io7rCTfPMQxrWatVIwWQJdn1Brrk0z9o2AfaTHdWTbMCS+fJCBNtcsDrjfPr3/1WJoyztllWGPqPNVjWTRtunmMYxyFwnPhj7mjjdk2B2zUlU4YTZBSu4xI47vDxzrppVmDxPBmvbkCXsBFdwsYRP29knJ9aenYaEgE078dkdnUSVnXHsKpK9kYJcKihaWzeG9Xqrjcf8tbmpOVUqQwiOuGT36sa6L0/Pq86GEFTRQi9UyHkszHtIyjsnif+cc4PGRMhBJ+95EepGmfQZtg41pdMAmZ1qzyejxOCYslBscRe534r3bV9pGlUdY2msZRzEyGMn4GSOnHMHe8sUyqZKJX8aROEEFz++W9VjfM73/sC/t/5/xRrn2JtVRl20E+tdpZgVjfFRe8rMFN5fu1rX8P999+PtWvXQlVV7Nq1q+1zzjrrLPzkJz8Z8bPFixfjwQcfjElltuhirAKqEEZ3IwONszoVxs/AUcfPwH//ZhJOOPnL+MNjL2DJx/4d9911xR5xvLNEvuBPmSCE4Ip/+za+e8PPAPjGuewzp1b3y+KgnIp21mBWd57+VBVmzNOyLJx66qlYuHAhfvzjHwd+3nHHHYfbbrut+m9NY/PDj0Ilci2fZ+ZjBtC57iQq0iPf9y48cO9VOH7JNfjDw2ux5GP/jh/etBx6TmX2eI/rSVlISIqDph+596Wb8J1v/xTAaOPMKpWIuzxjcyaZ1b0nx/Ndc801+OxnP4uDDjoo1PM0TcO0adOq2/jx42NSmD2yFLsWBlZ0H/m+d+G/77sa+byGPzy8FkvP+yYkMZvzJVvByvGuJ19Qcd3Xb2HOOAGGY+5Y1R1DPB9bt8gRWLVqFaZMmYLx48fjn/7pn/DVr34VEydObLq/aZowzeE2/YGBAQBAyXBQNg10FRQMlmwUdBmm5VXnPLkugaaKKBoOuvIKBou2v+/Qo1F2oCgiPM9vZlJkEYbpoqDLo/YtGQ40TYLjeBAEQBJFmJaLfIN9i4YDPSfBtj2IogBBAGzbg56TseGNQeR1CXpRHtadl2GaHmRZACHDukuGg0IT3aoiwfUIXd0lG7ouwxo6hhXduZyEjW8UR+ou2igUZJTLLhRFjKy7bDbWUjIc5DQJtuNBEPy5mpbtQs811p2v+eznHbI/fvnTy3DaGV/Hykf/FyefvgI/+/GlmDyx0FS3qoowmuguGQ40VYLreSAEkGURZhPdRcOBHlG3IPijbDVNxOtvFKHrEgRzAIUuDcVBE4UuDeWyDUWWQAiB5xEoioRy2YaeV6v7VB4Nw4KqyvBcDwSALEkwzSb7lixoOQWO7UIQBYiCANt2kdOVUfuWiib0vAbLtCHJ/r2+63hQVBmfu/g6/PQn9wAAvvGtf8OSkxejVDJD69ZUBe7QaExJkmBaNnS9se5cToFtu0PfNQG24yKXC65b1RQYJROGYcEoWdh71sTh423YUBQJHiEgHoGsSDCb6S5Z0DQFjutCACBKIizLoaI7n9dgmjZkWQIBGTpn5da6VQne0HdNlunoLhVN6LoKy3Yh1erWFBSLI/ctDpooFDSUzeHP3vWGde/cMUjZWRiqPKNw3HHH4ac//SlWrlyJa6+9Fo899hiOP/746helEStWrEBPT091mzlzZoKK6ZLXZRQY7M9iTffh730n7vnlF6DrGv74xF9x1rLrYRjsDKpg7XgTQvClK79bNc6vrbgEZy89JWVV4cgXNOgx9MPFDau69Rj6agVCSGoTvC677DJce+21Lfd54YUXMHfu3Oq/b7/9dlx88cWBBgzV89prr+Ftb3sbHn74YRxzzDEN92lUec6cORP9fXeiuzsf+j3TZMfOMgBg4oTOVqxPGlZ1//aBZ3Dap76OkmHi2EXzcN9dV0DXs9/EVTne+akHpKykPZXBQZWm2hXXfQ4XffaTKasKz86dfiU0YUJXykrCwaruDRu24h37LUZ/fz+6u7upvGaqzbaXXHIJzjrrrJb7zJkzh9r7zZkzB5MmTcIrr7zS1Dw1TRszg4oUhc2GBVZ1H/WPB+LXd16BUz+xojqIiAUDZeV41xvndddfijPPZqvirKDIjWMFsw6zupvEOHZCquY5efJkTJ48ObH3e+ONN7Bjxw5Mnz49sfdMk/TaFDqDZd2Hv/edeODeq/xpLIwYKAvHu944v/O9L+Bjp52IFBvOOoLrThYC+rrZuOUEsHHjRqxduxYbN26E67pYu3Yt1q5di8HB4Y7guXPn4t577wUADA4O4tJLL8Wf//xnrF+/HitXrsRJJ52E/fbbD4sXL07rz0gUz/MHTLAG67or01gKhVzVQLPcB5r1493IOJd95tTM624Fq9pZ1k0bZszzqquuwvz583H11VdjcHAQ8+fPx/z58/H0009X93nppZfQ398PwB8199xzz+FDH/oQ3v72t2Pp0qVYsGAB/vjHP46ZZtl2KIrITJNcLWNBN0sGmuXj3cw4AUBRJCgKo82IjGpnVncMzc2pDhhigYGBAfT09DA5YGj7Dn8gyOSJbA28GUu6H3/ieRy/5BqUStkdRFTR3TUtWwOGWhknAOx4czcAYOKkcano6wRWtbOqe/26Przz7cdRHTCUzdtNDhUKuoyCzt5U3rGkuz5IIYsVaBaPdzvjBAA9rzI5bQJgVzuzunX6U7G4eY5hBot2NXqNJcaa7qwbaNaOdxDjBPyouEpcHGuwqp1Z3XtyPB8nPKzGro1F3Vk20Cwd78rqKEEi91iNigPY1c6s7hji+bh5jmGyVlEEZazqrhho1gYRZeV4V4yz2eoo9bBaBQHsamdWN688OWHIUkURhrGsO4ujcLNwvMMaJ8BuFQSwq51Z3bzy5IShZDgoGQwucjzGdWfNQNM+3vXG+d2bvhhodRTDsGDEsMhxErCqnVndZfotK9w8xzCaKkFT2ZuTtSfozpKBpnm8GxnnOed+JNBzVVWGqmZrlHBQWNXOrG6FvmZunmMY1/PgeuytL7mn6M6KgaZ1vDsxTgDwXA+ey955ArCrnVndMZzf3DzHMISwkVtaz56ku2KgaY7CTeN4d2qcAECGNhZhVTvLumnDzXMMI8siZJm9j3hP0532NJakj3dlHmft4KCwxgn4C27LMayWkQSsamdWt0hfM3tXKE5gTNOFaTZf+Dur7Im60zTQJI930ACEIJimDdNMf4pNFFjVzqxuiw8Y4oQgr8vIZyx2LQh7qu60DDSp403TOAF2o+IAdrUzq5vH83HCkJXJ72HZk3WnYaBJHG/axgmwO2EfYFc7s7p5SAInDFmY/B6FPV130gYa9/GOwzgBdifsA+xqZ1Y3D0nghGFPruDSgKbuJA00zuMdl3EC7FZBALvamdXNK09OGPb0Ci5paOtOKgs3ruMdp3EC7FZBALvamdXNK09OGIqGgyKDMXdc9zBJzAONQ3fcxgkARsmCUWIvKg5gVzuzug0+2pYTAl2ToGvszcniukcSdxMubd1JGCcAaDkFWo69FgqAXe3M6tb4aFtOCGzHg+2wF6XFdY8mTgOlqTsp4wQAx3bh2OzNBwbY1c6sboe+Zm6eYxhBECAIQtoyQsN1NyauPlBaupM0TgAQRAGCyN55ArCrnWXdtOHmOYYRRX9jDa67OXGEydPQnbRxAoAoCBAZvMkC2NXOrG5w8+SEwLY92DaDzZ9cd0toG2inutMwTgCwbRc2g02IALvamdXNm205YdBzMvQcezF3XHd7aBpoJ7orq6MkbZwAkNMV5GKIXUsCVrUzqzuG7yU3zzEMDxtIlqR10zLQqLrrlxVL0jgBdifsA+xqZ1Y3D0nghIGHDSRLGrppGGgU3WkbJ8DuhH2AXe3M6uYhCZww8AouWdLS3amBhtWdBeME2K2CAHa1M6ubV56cMPAKLlnS1N2JgYbRXW+c373pi6kYJ8BuFQSwq51Z3bzy5IRhsGRjsMRgBcd1RyKqgQbV3cg4zzn3Ix3rjkqpaKJUZK8KAtjVzqzuGCIFuXmOYQq6jAKDi0pz3dGJkoUbRHfWjBMA9LwGPc9eFQSwq51Z3TqvPDkhMC0PpsXefEmuuzPCRvm1092ojzNt4wQAy7Rhmey1UADsamdWt0V/oQlunmMYSRIgSeylgXDdnRPGQFvpzsrgoEZIsghJZvMSxqp2ZnVL9DWzdxQ4HE4gOs3CrSQHZdE4OZy04eY5hnFdAtclacsIDddNjyB9oI10pxW5FwbX8eAyuPoOwK52ZnW79DVz8xzDaKoITWXvI+a66dKuCbdeNwvGCQCqpkCNYZ3GJGBVO7O6VR7PxwlB0XBQNOh3lMcN102fVgZaq5sV4wQAo2TCKLE3bQJgVzuzug0+VYUTgq68gq48e3eJXHc8NDPQim6WjBMA8gUN+QJ70yYAdrUzqzu/B09VWb9+PZYuXYrZs2dD13W87W1vw9VXXw3Lan1HUS6XccEFF2DixIno6urChz/8YWzdujUh1enCY+6ShQXdjQYRbd9RxO5BiynjBNiNigPY1c6s7hji+ZiZif7iiy/C8zzccsst2G+//fC3v/0Ny5YtQ7FYxPXXX9/0eZ/97Gdx//334+6770ZPTw8uvPBCnHLKKfjTn/6UoPp0YDHiDuC646YyiOiEk7+MPzy8FkvP+yYOePve+P4t9wNgwzgBMBkTV4FV7czqjiGeTyCEZGt4YAi+8Y1v4Ac/+AFee+21hr/v7+/H5MmTcccdd+AjH/Endb/44ot4xzvegdWrV+O9733vqOeYpgnTNEe8xqxZs/D3534IUZRRKCgolmzkdRmm5VXnx7kugaaKKBkOCnkFxaLt7zv0WC47kBURnuf3KymyiLLpIq/Lo/Y1DAeqJsFxPAgCIIkiLMuF3mDfkuEgl5Ng2x5EUYAgAI7tIZeT8fqmInRdhK7V6M7LME0PsiyAkGHdhuEg30S3okhwPUJXd8lGTpdhDR3Dim4tJ+GNTaWRuos28gUZZtmFrIiRdZtmYy2G4UDTJNiOB0EQIIkCbNtFLtdYt17z2UfRraoiyk10G4YDVZXgeh4IAWRZhNVEd8lwkOtA95OrX8DZn/k2SjV9WF/594tx8imLUSioKJsOFEkCAYHnESiyhLJpQ9cVFIsWCgW1+miUbaiKDM/zQADIogTTarKvYUPTFDiOC0EUIEKA7VR0j9y3VLKg6yosy6nO1XNdD6oqY/Omt6DrCrScOuI5YXVrigLX8xdLlkQJpm1DzzXWndMU2I7rf9cgwHZd5LRwug3DQtmwYBg29tp7/LDusgNFluCBgHgEsizBbKbbsKGpChzPhQBAFEVYtkNFd15XYVoO5KFj6HoEqiK11q1I8Ij/XZMlOrpLJQt6ToXluJBqdasyiqWR+xaLFgp5FWVr+LOv1f3m9l046n2nY9euXejp6enUenwIw3zhC18gCxYsaPr7lStXEgDkrbfeGvHzWbNmkW9961sNn3P11VcTAHzjG9/4xrcxtr366qvU/IeZZtt6XnnlFdx4440tm2z7+vqgqip6e3tH/Hzq1Kno6+tr+JzLL78cy5cvr/57165d2GeffbBx40Z6dywJMTAwgJkzZ+L1119Hd3d32nICw3UnC9edPKxqZ1V3pQVxwoQJ1F4zdfO87LLLcO2117bc54UXXsDcuXOr/960aROOO+44nHrqqVi2bBlVPZqmQdNGt+v39PQwdbLU0t3dzaR2rjtZuO7kYVU7q7pFkd4Y2dTN85JLLsFZZ53Vcp85c+ZU/3/z5s14//vfj8MPPxw//OEPWz5v2rRpsCwLu3btGlF9bt26FdOmTetENofD4XD2YFI3z8mTJ2Py5MmB9t20aRPe//73Y8GCBbjtttva3kUsWLAAiqJg5cqV+PCHPwwAeOmll7Bx40YsXLiwY+0cDofD2TNhZp7npk2bcPTRR2PWrFm4/vrrsX37dvT19Y3ou9y0aRPmzp2Lv/zlLwD8ptalS5di+fLlePTRR7FmzRqcffbZWLhwYcORto3QNA1XX311w6bcrMOqdq47Wbju5GFVO9c9DDNTVW6//XacffbZDX9X+RPWr1+P2bNn49FHH8XRRx8NwA9JuOSSS3DnnXfCNE0sXrwY3//+93mzLYfD4XAiw4x5cjgcDoeTFZhptuVwOBwOJytw8+RwOBwOJyTcPDkcDofDCQk3Tw6Hw+FwQsLNsw6Wlz772te+hsMPPxz5fH5UJGEzzjrrLAiCMGI77rjj4hVaRxTdhBBcddVVmD59OnRdx6JFi/Dyyy/HK7QBO3fuxCc+8Ql0d3ejt7cXS5cuxeDgYMvnHH300aOO+XnnnRerzptuugn77rsvcrkcDjvssOp0rmbcfffdmDt3LnK5HA466CA88MADseprRhjdt99++6jjmsvlElTr8/jjj+ODH/wgZsyYAUEQcN9997V9zqpVq3DooYdC0zTst99+uP3222PXWU9Y3atWrRp1vAVBaBp9GhcrVqzAP/zDP2DcuHGYMmUKlixZgpdeeqnt8zo9x7l51lG79Nnzzz+Pb3/727j55ptxxRVXtHzeZz/7Wfz2t7/F3XffjcceewybN2/GKaeckpBqH8uycOqpp+L8888P9bzjjjsOW7ZsqW533nlnTAobE0X3ddddh+9+97u4+eab8dRTT6FQKGDx4sUol8sxKh3NJz7xCTz//PN46KGH8Lvf/Q6PP/44zj333LbPW7Zs2Yhjft1118Wm8a677sLy5ctx9dVX45lnnsEhhxyCxYsXY9u2bQ33f/LJJ3H66adj6dKlePbZZ7FkyRIsWbIEf/vb32LTSEM34MfG1R7XDRs2JKjYp1gs4pBDDsFNN90UaP9169bhxBNPxPvf/36sXbsWF198Mc455xz8/ve/j1npSMLqrvDSSy+NOOZTpkyJSWFjHnvsMVxwwQX485//jIceegi2bePYY49FsVhs+hwq5zi1iPkxzHXXXUdmz57d9Pe7du0iiqKQu+++u/qzF154gQAgq1evTkLiCG677TbS09MTaN8zzzyTnHTSSbHqCUpQ3Z7nkWnTppFvfOMb1Z/t2rWLaJpG7rzzzhgVjuT//u//CADyP//zP9Wf/fd//zcRBIFs2rSp6fOOOuooctFFFyWg0Oc973kPueCCC6r/dl2XzJgxg6xYsaLh/h/96EfJiSeeOOJnhx12GPnMZz4Tq856wuoOc94nBQBy7733ttzn85//PHnXu9414mcf+9jHyOLFi2NU1poguh999FECjF61Km22bdtGAJDHHnus6T40znFeeQagv7+/ZRr/mjVrYNs2Fi1aVP3Z3LlzMWvWLKxevToJiR2xatUqTJkyBQcccADOP/987NixI21JLVm3bh36+vpGHO+enh4cdthhiR7v1atXo7e3F+9+97urP1u0aBFEUcRTTz3V8rm/+MUvMGnSJBx44IG4/PLLUSqVYtFoWRbWrFkz4liJoohFixY1PVarV68esT8ALF68ONFjG0U3AAwODmKfffbBzJkzcdJJJ+H5559PQm5HZOF4d8K8efMwffp0fOADH8Cf/vSntOWgv78fAFpes2kc89SzbbNOXEufZYXjjjsOp5xyCmbPno1XX30VV1xxBY4//nisXr0akiSlLa8hlWM6derUET9P+nj39fWNaqKSZRkTJkxoqePjH/849tlnH8yYMQPPPfcc/u3f/g0vvfQS7rnnHuoa33zzTbiu2/BYvfjiiw2f09fXl/qxjaL7gAMOwK233oqDDz4Y/f39uP7663H44Yfj+eefx957752E7Eg0O94DAwMwDAO6rqekrDXTp0/HzTffjHe/+90wTRM/+tGPcPTRR+Opp57CoYcemoomz/Nw8cUX44gjjsCBBx7YdD8a5/geU3ledtllDTu3a7f6L2WcS5/FqTsMp512Gj70oQ/hoIMOwpIlS/C73/0O//M//4NVq1ZlWnecxK393HPPxeLFi3HQQQfhE5/4BH7605/i3nvvxauvvkrxr9jzWLhwIc444wzMmzcPRx11FO655x5MnjwZt9xyS9rSxiQHHHAAPvOZz2DBggU4/PDDceutt+Lwww/Ht7/97dQ0XXDBBfjb3/6GX/7yl7G/1x5TebK69FlY3Z0yZ84cTJo0Ca+88gqOOeaY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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "\n",
    "ax.contourf(xx1, xx2, yy, levels=20, cmap=\"RdYlBu_r\")  # 绘制目标函数的等高线图\n",
    "\n",
    "yy_nlc = nonlinear_c(np.vstack([xx1.ravel(), xx2.ravel()])).reshape((num, num))  # 计算非线性约束\n",
    "ax.contour(xx1, xx2, yy_nlc, levels=[0], colors=\"k\")  # 绘制约束边界\n",
    "\n",
    "plt.plot(optimized_x[0], optimized_x[1], 'rx', markersize=12)  # 标记优化解\n",
    "\n",
    "ax.set_xlabel('$\\it{x}_1$')  # 设置 x 轴标签\n",
    "ax.set_ylabel('$\\it{x}_2$')  # 设置 y 轴标签\n",
    "ax.axis('square')\n",
    "ax.grid(linestyle='--', linewidth=0.25, color=[0.5, 0.5, 0.5])\n",
    "ax.set_xlim([rr.min(), rr.max()])\n",
    "ax.set_ylim([rr.min(), rr.max()])"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
